java 如何写文件
写入文件的基本方法
使用 FileWriter 或 BufferedWriter 可以方便地将内容写入文件。FileWriter 直接操作文件,而 BufferedWriter 提供了缓冲功能,适合大量数据写入。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFile {
public static void main(String[] args) {
String content = "Hello, World!";
String filePath = "output.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files 类写入文件
Java 7 引入的 Files 类提供了更简洁的文件操作方式。Files.write() 方法可以直接将字符串或字节数组写入文件。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class WriteToFile {
public static void main(String[] args) {
String content = "Hello, World!";
String filePath = "output.txt";
try {
Files.write(Paths.get(filePath), content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
追加内容到文件
如果需要追加内容而不是覆盖原有文件,可以在 FileWriter 构造函数中传入 true 作为第二个参数。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class AppendToFile {
public static void main(String[] args) {
String content = "Appended content";
String filePath = "output.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true))) {
writer.write(content);
writer.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}
写入二进制数据
对于二进制数据(如图片或音频文件),可以使用 FileOutputStream 或 BufferedOutputStream。
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteBinaryData {
public static void main(String[] args) {
byte[] data = {0x48, 0x65, 0x6C, 0x6C, 0x6F}; // "Hello" in ASCII
String filePath = "binary.bin";
try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(filePath))) {
outputStream.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 try-with-resources 确保资源释放
以上示例均使用了 try-with-resources 语法,确保文件资源在使用后自动关闭。这是 Java 7 引入的特性,避免了手动调用 close() 方法。
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
处理文件路径
建议使用 Paths.get() 或 Path.of()(Java 11+)处理文件路径,以提高代码的可移植性。
import java.nio.file.Paths;
import java.nio.file.Path;
Path filePath = Paths.get("output.txt");
// 或
Path filePath = Path.of("output.txt");






