Java中FileOutputStream写文件需创建流、写入字节(write(int b)/write(byte[])/write(byte[],int,int))、用try-with-resources自动关闭;默认覆盖,追加需构造时传true;写字符串须显式指定UTF-8等编码。

Java 中使用 FileOutputStream 写入字节到文件,核心是创建输出流、调用写入方法、最后关闭流(推荐用 try-with-resources 自动管理)。
基本写入单个字节或字节数组
最常用的方式是传入文件路径或 File 对象构造流,再用 write(int b) 写单字节,或 write(byte[] b) / write(byte[] b, int off, int len) 写字节数组:
-
write(int b):写入参数低 8 位(即b & 0xFF),适合写 ASCII 字符或简单数值 -
write(byte[] b):写入整个字节数组 -
write(byte[] b, int off, int len):从数组b的索引off开始写len个字节,更安全可控
推荐用 try-with-resources 确保流关闭
手动调用 close() 容易遗漏或异常后跳过,用 try-with-resources 最稳妥:
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
fos.write('H'); // 写字符 'H'(ASCII 72)
fos.write("ello".getBytes()); // 写字符串转成的字节数组
} catch (IOException e) {
e.printStackTrace();
}
这样无论是否异常,fos 都会自动关闭,避免资源泄漏。
立即学习“Java免费学习笔记(深入)”;
你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
注意覆盖与追加模式
FileOutputStream(String name) 默认覆盖写入;如需追加内容,用带布尔参数的构造方法:
-
new FileOutputStream("log.txt", true):在文件末尾追加 -
new FileOutputStream("log.txt", false)或仅传文件名:清空原文件后重写(默认行为)
写字符串时建议指定字符编码
String.getBytes() 使用平台默认编码,跨环境可能出乱码。应显式指定,例如:
String text = "你好,World!"; byte[] data = text.getBytes(StandardCharsets.UTF_8); // 推荐 fos.write(data);
避免用无参 getBytes(),尤其处理中文等非 ASCII 文本时。
不复杂但容易忽略细节:关流、选模式、定编码——这三点到位,写文件就稳了。

















