39. Java IO: FileReader

想要查看此教程的目录请点击:Java IO教程目录贴地址


FileReader类(java.io.FileReader),可以基于字符流来读取文件内容。它的工作机制类似于FileInputStream,但是FileInputStream是读取字节。换句话来说,FileReader的意图是读取文本。一个字符可能对于一个或多个字节,这取决于字符的编码格式。

FileReader例子

下面是Java FileReader的简单例子:

Reader fileReader = new FileReader("c:\\data\\input-text.txt");

int data = fileReader.read();
while(data != -1) {
  //do something with data...
  doSomethingWithData(data);

  data = fileReader.read();
}
fileReader.close();

例子首先创建了一个FileReader,并且在构造方法传入了一个文件路径。然后,从FileReader每次读取一个字符并读取了所有的内容,最后,将FileReader关闭。

注意:上面例子省略了必要的异常处理,更多的关于异常处理的内容,可以参考“Java IO Exception Handling”。

read()

FileReader的read()方法返回了一个int值,此值为读取的字符值。如果方法返回 -1,则代表数据已经读取完毕。

FileReader字符编码

FileReader假设你想以计算机的默认编码格式来解码文件中的字节。这并不一定是你想要的,你也改不不了这个。

如果你想指定一个不同的编码格式,就不要用FileReader了。可以在FileInputStream上使用InputStreamReader。InputStreamReader可以让你指定编码格式去读取文件的字节。

关闭FileReader

当你从FileReader读取完字符之后你要记得去关闭它。关闭FileReader可以调用close()方法。可以像下面这样来使用:

fileReader.close();

你也可以使用java 7中的 try-with-resources 结构。下面是如何使用try-with-resources来关闭流:

try(FileReader fileReader =
    new FileReader("c:\\data\\text.txt")){

    int data = fileReader.read();
    while(data != -) {
        System.out.print((char) data));
        data = fileReader.read();
    }
}

注意上面例子并没有调用close()方法。try-with-resources 结构会考虑这个的。

你可能感兴趣的:(39. Java IO: FileReader)