想要查看此教程的目录请点击: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 结构会考虑这个的。