在 Java 中,文件读取和写入可以使用多种不同的方式来实现。下面将介绍一些常见的文件读取和写入方式,并提供每种方式的详细步骤和示例代码。请注意,有许多第三方库可用于简化文件操作,我们将在需要时提供这些库的依赖坐标。
这是最基本的文件读取和写入方法,使用 Java 的输入流(InputStream)和输出流(OutputStream)。
依赖坐标(无需第三方库): 无
文件读取步骤:
文件写入步骤:
示例代码:
import java.io.*;
public class FileReadWriteExample {
public static void main(String[] args) {
// 文件读取
try (InputStream inputStream = new FileInputStream("input.txt")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
// 处理读取的数据,例如打印到控制台
System.out.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
// 文件写入
try (OutputStream outputStream = new FileOutputStream("output.txt")) {
String content = "Hello, World!";
byte[] bytes = content.getBytes();
outputStream.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java NIO 提供了更灵活和高性能的文件读取和写入方式,使用通道(Channel)和缓冲区(Buffer)。
依赖坐标(无需第三方库): 无
文件读取步骤:
文件写入步骤:
示例代码:
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NIOFileReadWriteExample {
public static void main(String[] args) {
// 文件读取
try (FileChannel channel = new FileInputStream("input.txt").getChannel()) {
ByteBuffer buffer = ByteBuffer.allocate(1024);
int bytesRead = channel.read(buffer);
while (bytesRead != -1) {
buffer.flip();
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
buffer.clear();
bytesRead = channel.read(buffer);
}
} catch (IOException e) {
e.printStackTrace();
}
// 文件写入
try (FileChannel channel = new FileOutputStream("output.txt").getChannel()) {
String content = "Hello, World!";
ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());
channel.write(buffer);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache Commons IO 是一个常用的第三方库,提供了简化文件操作的方法。
Maven 依赖坐标:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
Gradle 依赖坐标:
implementation group: 'org.apache.commons', name: 'commons-io', version: '2.7'
文件读取步骤:
使用 FileUtils 类的静态方法读取文件内容。
文件写入步骤:
使用 FileUtils 类的静态方法写入数据到文件。
示例代码:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class ApacheCommonsIOExample {
public static void main(String[] args) {
// 文件读取
try {
String content = FileUtils.readFileToString(new File("input.txt"), "UTF-8");
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
// 文件写入
try {
FileUtils.writeStringToFile(new File("output.txt"), "Hello, World!", "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上是三种常见的文件读取和写入方式的示例。你可以根据项目需求选择最适合你的方法。如果需要使用第三方库,可以根据示例中提供的依赖坐标将其添加到项目中。