Java逐字符地读取utf-8编码文件

时间:2009-12-13 23:37:55

标签: java

我有一个文件保存为utf-8(事实上由我的应用程序保存)。你如何逐字逐句地阅读它?

File file = new File(folder+name);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);

这两个选项似乎是:

char c = dis.readByte()
char c = dis.readChar()
  • 只要您只存储了ascii字符,即第一个选项,即英语。
  • 第二个选项将文件的第一个和第二个字节作为一个字符读取。

原始文件的编写如下:

File file = File.createTempFile("file", "txt");
FileWriter fstream = new FileWriter(file);
BufferedWriter out = new BufferedWriter(fstream);

4 个答案:

答案 0 :(得分:7)

您不需要DataInputStream,用于读取原始字节。使用InputStreamReader,可以指定输入的编码(在您的情况下为UTF-8)。

答案 1 :(得分:4)

您应该知道,在Java世界中,您使用流来处理字节,并使用读取器/编写器来处理字符。这两个是不一样的,你应该选择合适的一个来处理你拥有的东西。

查看http://java.sun.com/docs/books/tutorial/i18n/text/stream.html,了解如何在面向字节的世界中使用字符。

Sun Java Tutorial是一个强烈推荐的学习资源。

答案 2 :(得分:2)

使用Reader(例如BufferedReader

Reader reader = new BufferedReader(new FileReader(file));

char c = reader.read();

答案 3 :(得分:-1)

您可以读取单个字节,当您点击小于128的字节(即第8个字节为0)时,那就是该字符的最后一个字节。

我不是Java专家,但我认为有更好的方法。也许某种方式告诉读者它的编码是什么......

修改:请参阅dmazzoni的回答。