一、介绍
Java提供了多种方法读取文件,其中FileReader是最基础的一种。FileReader可以读取字符流文件,并以字符的形式输出。下面将介绍如何使用FileReader读取文件内容。
二、读取文件的方法
可以使用Java自带的FileReader类来读取文件内容。需要先创建一个FileReader对象,并使用该对象从文件中读取字符。
try { FileReader reader = new FileReader("file.txt"); int character; while ((character = reader.read()) != -1) { System.out.print((char)character); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
该代码会读取file.txt文件中所有的字符,并在控制台上输出。需要注意,FileReader会读取字符,而不是读取字节。因此,对于含有中文的文件,FileReader无法正确读取。
三、文件编码问题
对于含有中文的文件,需要注意文件编码问题。如果文件编码为UTF-8,则需要使用InputStreamReader将字节流转换为字符流,并指定字符集为UTF-8:
try { FileReader reader = new FileReader(new InputStreamReader(new FileInputStream("file.txt"), "UTF-8")); int character; while ((character = reader.read()) != -1) { System.out.print((char)character); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
如果文件编码为GBK,则需要将字符集指定为GBK:
try { FileReader reader = new FileReader(new InputStreamReader(new FileInputStream("file.txt"), "GBK")); int character; while ((character = reader.read()) != -1) { System.out.print((char)character); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
四、读取指定长度的文件内容
有时候需要按指定长度读取文件内容,而非全部读取。可以使用FileReader的read(char[] cbuf, int off, int len)方法,该方法将文件内容读取到一个长度为len的字符数组cbuf中:
try { FileReader reader = new FileReader("file.txt"); char[] cbuf = new char[1024]; int len; while ((len = reader.read(cbuf, 0, cbuf.length)) != -1) { System.out.print(new String(cbuf, 0, len)); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
五、结论
以上是使用Java FileReader读取文件内容的几种方法。需要注意的是,在使用FileReader读取文件时,需要注意文件编码问题。