从文件中读取特殊字符时发出问题

时间:2011-06-26 08:46:56

标签: java file-io filestream

我在阅读带有特殊字符的文件时遇到问题。我的.txt文件有数据:

我正在使用以下代码阅读此文件:

StringBuilder sBuilderString = new StringBuilder();

for (int n; (n = loInputStream.read()) != -1;) {
    sBuilderString.append((char)n);
}

此字符串现在再次用于写入文件,问题是当我写文件时,这两个字符中的一个被其他特殊字符替换。

如何编写能够读取所有特殊字符并将其写入另一个文件的代码?

2 个答案:

答案 0 :(得分:2)

您的角色编码存在问题。对'(char)n的调用将使用系统的默认字符编码将字节n有效地转换为字符,这可能与源文件的编码不同。

避免这种情况的一种方法是将InputStream包装在CharacterInputStream中,您可以在其中指定字符编码:

Reader reader = new InputStreamReader( loInputStream, "UTF-8");

然后,您可以继续将您的流读入StringBuilder。我还建议使用bufferedReader包装读卡器,以提高阻塞IO流的性能。

Reader reader = new BufferedReader(new InputStreamReader( loInputStream, "UTF-8"));

答案 1 :(得分:1)

使用InputStreamReader并指定文件中使用的编码。