java中如何保存文件
使用 FileOutputStream 保存文件
FileOutputStream 是 Java 中最基础的字节流写入方式,适用于二进制文件或文本文件。通过创建 FileOutputStream 对象并调用 write 方法写入数据。
import java.io.FileOutputStream;
import java.io.IOException;
public class FileSaveExample {
public static void main(String[] args) {
String data = "Hello, World!";
String filePath = "output.txt";
try (FileOutputStream fos = new FileOutputStream(filePath)) {
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileWriter 保存文本文件
FileWriter 是字符流写入方式,专门用于文本文件。相比字节流,它更高效且能正确处理字符编码。
import java.io.FileWriter;
import java.io.IOException;
public class FileSaveExample {
public static void main(String[] args) {
String data = "Hello, World!";
String filePath = "output.txt";
try (FileWriter writer = new FileWriter(filePath)) {
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 BufferedWriter 提高性能
BufferedWriter 包装了 FileWriter,通过缓冲区减少磁盘 I/O 次数,适合频繁写入或大文件场景。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileSaveExample {
public static void main(String[] args) {
String data = "Hello, World!";
String filePath = "output.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files 类(Java 7+)
Java NIO 的 Files 类提供了简洁的写入方法,如 write() 可一次性写入字节或行集合。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class FileSaveExample {
public static void main(String[] args) {
String data = "Hello, World!";
String filePath = "output.txt";
List<String> lines = Arrays.asList("Line 1", "Line 2");
try {
// 写入字符串
Files.write(Paths.get(filePath), data.getBytes());
// 写入多行
Files.write(Paths.get("lines.txt"), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
处理路径和目录
确保目标目录存在,可使用 Files.createDirectories() 创建父目录。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class FileSaveExample {
public static void main(String[] args) {
String filePath = "path/to/output.txt";
try {
Files.createDirectories(Paths.get(filePath).getParent());
Files.write(Paths.get(filePath), "Data".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
追加写入文件
通过 FileWriter 或 Files 的追加模式实现内容追加而非覆盖。
// FileWriter 追加模式
try (FileWriter writer = new FileWriter("output.txt", true)) {
writer.append("\nAdditional text");
}
// Files 追加模式(Java 7+)
Files.write(
Paths.get("output.txt"),
"\nAppended".getBytes(),
StandardOpenOption.APPEND
);
异常处理最佳实践
推荐使用 try-with-resources 自动关闭资源,并对 IOException 进行适当处理。

try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("output.txt"))) {
writer.write("Content");
} catch (IOException e) {
System.err.println("Error writing file: " + e.getMessage());
}






