您的位置:

用Java FileReader读取文件

一、介绍

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读取文件时,需要注意文件编码问题。