【发布时间】:2020-09-05 12:31:29
【问题描述】:
我有一个从 FileInputStream 对象获得的 BufferedInputStream,例如:
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)
现在,我想从 buffredInputStream 中删除字符 { 和 }(我知道文件中有这些字符)。
我认为我可以像string replace 那样轻松地做到这一点,但我发现使用 BufferedInputStream 没有简单的方法。
任何想法如何替换 BufferedInputStream 中的那些特定字符并返回新修改的 BufferedInputStream?
编辑:
最后我想决定一个文件的字符集。虽然字符 {} 给我带来了一些问题,所以我想在决定文件的字符集之前删除它们。这表明我正在尝试确定字符集:
static String detectCharset(File file) {
try (FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {
CharsetDetector charsetDetector=new CharsetDetector();
charsetDetector.setText(bufferedInputStream);
charsetDetector.enableInputFilter(true);
CharsetMatch cm=charsetDetector.detect();
return cm.getName();
} catch (Exception e) {
return null;
}
}
【问题讨论】:
-
BufferedInputStream不知道字符。考虑改用BufferedReader。你能用BufferedReader吗? -
我敢打赌,在你的实际任务描述中没有
BufferedInputStream的要求。显然,您的出发点是一个文件。然后,说出你真正想要做什么以及实际结果应该是什么。肯定不是以BufferedInputStream本身为目的。 -
@Holger 请看我的编辑
-
“
{}的字符给我带来了一些问题”是什么意思?一个应该检测字节序列字符集的软件会被{和}字符这样的小东西所迷惑?听起来你应该放弃那个坏掉的工具而不是添加一个杂物。如果您知道文件包含{和}字符,甚至在字节被解码之前,这意味着您比CharsetDetector更了解文件具有哪个实际字符集。然后,只需使用已知的字符集。
标签: java file-io stream buffer