一、File类
Java读取文件内容必不可少的就是File类。File类表示操作系统中的文件名,路径名或者目录名,可以用来新建,删除,重命名文件和目录,获取文件和目录信息。
下面是读取文件内容的代码示例:
File file = new File("test.txt");
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String str;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
上面的代码首先通过new File("test.txt")指定文件路径和文件名,然后使用BufferedReader类读取文件内容,通过while循环逐行读取文件内容并输出到控制台。
二、InputStream和Reader
InputStream和Reader是Java IO中的两个重要的抽象基类,InputStream是二进制流,Reader是字符流。使用InputStream或者Reader读取文件内容可以帮助我们读取文本文件(非二进制文件)的内容。
下面是一个使用Reader读取文件内容的示例代码:
File file = new File("test.txt");
try {
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
String str;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
使用FileReader类读取文件内容,并将FileReader对象传入BufferedReader类中以便于一次读取一行,然后逐行读取并输出文件内容。
三、Scanner
Scanner是Java内置的一个读取用户输入的类,他也可以用于读取文件内容。使用Scanner读取文件内容需要先创建File对象,并将其传入Scanner构造函数中。
下面是一个使用Scanner读取文件内容的示例代码:
File file = new File("test.txt");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
使用Scanner类读取文件内容,并通过while循环和hasNextLine()方法逐行读取文件内容并输出到控制台。
四、NIO
Java NIO(New IO)是从Java 1.4开始引入的一组新IO API。相较于之前的IO API,NIO提供了更高效的IO操作和更多的控制选项。下面是一个使用NIO读取文件内容的示例代码:
File file = new File("test.txt");
try {
FileInputStream fileInputStream = new FileInputStream(file);
FileChannel fileChannel = fileInputStream.getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate((int) file.length());
fileChannel.read(byteBuffer);
byteBuffer.flip();
byte[] bytes = byteBuffer.array();
System.out.println(new String(bytes, 0, bytes.length));
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
使用FileInputStream读取文件内容,并调用getChannel()方法获取FileChannel对象,然后调用read()方法将文件内容读入到ByteBuffer缓冲区中。最后通过flip()方法将缓冲区设置为读模式,并通过byteBuffer.array()将缓冲区中的内容转换为字节数组,再通过new String()方法将字节数组转换为字符串并输出到控制台。