在 Java 中,有多种方式可以读取文件,每种方式都有其适用的场景和优缺点。以下是一些常见的文件读取方式以及它们的详细步骤流程,包括使用第三方库的情况:
这是最基本的文件读写方式,适用于小型文件。不需要额外的依赖。
import java.io.*;
public class FileReadWriteExample {
public static void main(String[] args) {
try {
// 读取文件
FileInputStream inputStream = new FileInputStream("input.txt");
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
inputStream.close();
// 写入文件
FileOutputStream outputStream = new FileOutputStream("output.txt");
String text = "Hello, World!";
outputStream.write(text.getBytes());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这种方式适用于文本文件的读写,它可以提高性能,逐行读取或写入文本。
import java.io.*;
public class BufferedReaderWriterExample {
public static void main(String[] args) {
try {
// 读取文件
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
// 写入文件
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
String text = "Hello, World!";
writer.write(text);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java NIO 提供了更高效的文件操作方式,适用于大型文件和网络通信。不需要额外的依赖。
import java.io.IOException;
import java.nio.file.*;
import java.util.List;
public class JavaNIOExample {
public static void main(String[] args) {
try {
// 读取文件
List<String> lines = Files.readAllLines(Paths.get("input.txt"));
for (String line : lines) {
System.out.println(line);
}
// 写入文件
String text = "Hello, World!";
Files.write(Paths.get("output.txt"), text.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache Commons IO 提供了更多的文件操作功能,如复制、移动、递归操作等。需要添加以下 Maven 或 Gradle 依赖:
Maven 依赖坐标:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
Gradle 依赖坐标:
implementation group: 'org.apache.commons', name: 'commons-io', version: '2.11.0'
示例代码:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class CommonsIOExample {
public static void main(String[] args) {
try {
// 读取文件
String content = FileUtils.readFileToString(new File("input.txt"), "UTF-8");
System.out.println(content);
// 写入文件
FileUtils.writeStringToFile(new File("output.txt"), "Hello, World!", "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
}
}
这些是常见的文件读取方式,你可以根据你的需求选择最适合的方法。在使用第三方库时,请确保在项目的构建工具中添加正确的依赖。