java中如何保存文件
保存文件的基本方法
使用 FileOutputStream 或 BufferedWriter 保存文件内容。FileOutputStream 适用于二进制数据,BufferedWriter 适用于文本数据。
import java.io.FileOutputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
// 使用 FileOutputStream 保存二进制数据
try (FileOutputStream fos = new FileOutputStream("output.bin")) {
byte[] data = {1, 2, 3, 4, 5};
fos.write(data);
} catch (IOException e) {
e.printStackTrace();
}
// 使用 BufferedWriter 保存文本数据
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
使用 NIO 的 Files 类
Java NIO 提供了 Files 类,可以更简洁地保存文件内容。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.Arrays;
// 保存文本数据
try {
Files.write(Paths.get("output.txt"), "Hello, World!".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
// 保存多行文本数据
List<String> lines = Arrays.asList("Line 1", "Line 2", "Line 3");
try {
Files.write(Paths.get("output.txt"), lines, StandardOpenOption.CREATE);
} catch (IOException e) {
e.printStackTrace();
}
保存对象到文件
使用 ObjectOutputStream 可以将 Java 对象序列化后保存到文件。

import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.io.Serializable;
import java.io.IOException;
class MyClass implements Serializable {
private String name;
public MyClass(String name) { this.name = name; }
public String getName() { return name; }
}
// 保存对象
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.dat"))) {
MyClass obj = new MyClass("Test");
oos.writeObject(obj);
} catch (IOException e) {
e.printStackTrace();
}
使用第三方库
Apache Commons IO 提供了更简洁的文件操作方法。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
// 保存文本数据
try {
FileUtils.writeStringToFile(new File("output.txt"), "Hello, World!", "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
处理大文件
对于大文件,建议使用缓冲流或 NIO 的 Files 类,避免内存溢出。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
// 使用 BufferedWriter 处理大文本文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter("large_output.txt"))) {
for (int i = 0; i < 1000000; i++) {
writer.write("Line " + i + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
// 使用 NIO 处理大文件
try {
Files.write(Paths.get("large_output.txt"), "Large content".getBytes(), StandardOpenOption.CREATE);
} catch (IOException e) {
e.printStackTrace();
}






