一、Java文件读取基础
使用Java读取文件是Java开发中常用的功能。Java提供了多种方式用于读取文件内容,常见的有FileInputStream、FileReader、BufferedReader等。
其中,FileInputStream和FileReader都是基于文件字节流的读取方式。BufferedReader则是基于字符缓冲区的读取方式,可以提高读取效率。
以下是使用FileInputStream读取文件内容的示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFileExample {
public static void main(String[] args) {
File file = new File("file.txt");
try (FileInputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[(int) file.length()];
fis.read(buffer);
String content = new String(buffer);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,首先创建File对象,并在try-with-resources语句中创建FileInputStream对象。通过FileInputStream对象读取文件内容,将读取的字节存储在byte数组中,并通过String构造器将byte数组转换为字符串。
二、使用BufferedReader读取文件
使用BufferedReader读取文件内容相比FileInputStream和FileReader更加高效,因为它可以一次读取多个字符并将它们缓存在内存中。
使用BufferedReader读取文件内容的示例代码如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExample {
public static void main(String[] args) {
File file = new File("file.txt");
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,首先创建File对象。在try-with-resources语句中创建BufferedReader对象,同时创建FileReader对象以逐行读取文件内容,并将读取的内容存储在line字符串变量中。
三、使用Java NIO读取文件
Java NIO(New IO)是Java SE 1.4中引入的一组新的Input/Output(I/O)API,可以提供高速的、面向缓冲的I/O操作。
使用Java NIO读取文件内容的示例代码如下:
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class ReadFileExample {
public static void main(String[] args) {
String fileName = "file.txt";
try (Stream
stream = Files.lines(Paths.get(fileName), StandardCharsets.UTF_8)) {
stream.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,通过Paths.get方法获取文件路径。在try-with-resources语句中创建Stream对象,通过Files.lines方法读取文件内容,将读取的每一行直接输出。
四、读取二进制文件
除了常规的文本文件,Java也可以读取二进制文件。读取二进制文件时,需要使用字节流读取器。
读取二进制文件的示例代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class ReadFileExample {
public static void main(String[] args) {
File file = new File("file.bin");
try (InputStream is = new FileInputStream(file)) {
byte[] buffer = new byte[(int) file.length()];
is.read(buffer);
for (byte b : buffer) {
System.out.print(b + " ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,首先创建File对象。在try-with-resources语句中创建FileInputStream对象以读取二进制文件内容。读取的字节存储在byte数组中,并逐个输出每个字节值。
五、使用Scanner读取文件
Java还提供了Scanner类,可以用于读取文件中的各种类型的数据,包括文本和二进制数据。
使用Scanner读取文件内容的示例代码如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFileExample {
public static void main(String[] args) {
File file = new File("file.txt");
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
上述代码中,首先创建File对象。在try-with-resources语句中创建Scanner对象以逐行读取文件内容,并将读取的每一行输出。