java 如何保存文件
使用 FileOutputStream 保存文件
FileOutputStream 是 Java 中用于将字节数据写入文件的类。适用于保存二进制数据或原始字节流。
import java.io.FileOutputStream;
import java.io.IOException;
public class SaveFileExample {
public static void main(String[] args) {
String data = "Hello, World!";
String filePath = "example.txt";
try (FileOutputStream fos = new FileOutputStream(filePath)) {
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileWriter 保存文本文件
FileWriter 专门用于写入字符数据到文件,比 FileOutputStream 更适合处理文本内容。
import java.io.FileWriter;
import java.io.IOException;
public class SaveTextFile {
public static void main(String[] args) {
String content = "This is a text file.";
String filename = "textfile.txt";
try (FileWriter writer = new FileWriter(filename)) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 BufferedWriter 提高写入效率
对于大量文本数据,BufferedWriter 可以提供缓冲功能,显著提高写入性能。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedFileWrite {
public static void main(String[] args) {
String[] lines = {"Line 1", "Line 2", "Line 3"};
String file = "output.txt";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
for (String line : lines) {
bw.write(line);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files 类(Java 7+)
Java 7 引入的 Files 类提供了更简洁的文件操作方法,适合现代Java开发。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class FilesClassExample {
public static void main(String[] args) {
List<String> lines = Arrays.asList("First line", "Second line");
String path = "lines.txt";
try {
Files.write(Paths.get(path), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
保存对象到文件(序列化)
使用 ObjectOutputStream 可以将Java对象序列化后保存到文件中。

import java.io.*;
import java.util.Date;
public class ObjectSerialization {
public static void main(String[] args) {
Date currentDate = new Date();
String objectFile = "date.ser";
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(objectFile))) {
oos.writeObject(currentDate);
} catch (IOException e) {
e.printStackTrace();
}
}
}
处理文件路径
使用 Paths 和 Path 类可以更安全地处理文件路径,避免平台相关的路径问题。
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.io.IOException;
public class PathExample {
public static void main(String[] args) {
Path path = Paths.get("data", "subfolder", "file.txt");
String content = "Path example";
try {
Files.createDirectories(path.getParent());
Files.write(path, content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
追加内容到现有文件
通过设置 append 参数为 true,可以在不覆盖现有内容的情况下追加新内容。
import java.io.FileWriter;
import java.io.IOException;
public class AppendToFile {
public static void main(String[] args) {
String text = "Appended text\n";
String filename = "log.txt";
try (FileWriter fw = new FileWriter(filename, true)) {
fw.append(text);
} catch (IOException e) {
e.printStackTrace();
}
}
}
每种方法适用于不同场景,根据具体需求选择合适的文件保存方式。二进制数据建议使用字节流,文本内容适合字符流,大量数据应考虑缓冲,现代Java项目推荐使用NIO.2 API。






