fileoutputstream的write(byte[] b)可一次性写入整个字节数组,高效;支持write(byte[] b, int off, int len)写入子数组;字符串转字节必须显式指定编码如utf_8,且需用try-with-resources确保流关闭。

直接用 FileOutputStream 的 write(byte[] b) 方法就能写入整个字节数组,无需手动循环单个字节。
基础写法:一次性写入完整数组
这是最常用、最高效的方式。传入字节数组,它会把全部内容写入文件:
byte[] data = "Hello, 世界".getBytes(StandardCharsets.UTF_8);
try (FileOutputStream fos = new FileOutputStream("output.bin")) {
fos.write(data); // 一次性写入整个数组
}
指定偏移量和长度(写入子数组)
如果只想写数组中某一段,用三参数重载方法:write(byte[] b, int off, int len):
- off:起始索引(从 0 开始)
- len:要写入的字节数
例如,跳过前两个字节,只写后面 5 个:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
byte[] data = {1, 2, 3, 4, 5, 6, 7};
try (FileOutputStream fos = new FileOutputStream("part.bin")) {
fos.write(data, 2, 5); // 写入 data[2] 到 data[6](共 5 个字节)
}
注意字符编码与字节数组来源
FileOutputStream 只处理原始字节,不关心文本含义。字符串转字节数组时,必须显式指定编码,否则依赖平台默认编码(易出错):
// ✅ 推荐:明确指定 UTF-8 String text = "你好"; byte[] bytes = text.getBytes(StandardCharsets.UTF_8); // ❌ 避免:无参 getBytes(),行为不确定 byte[] unsafe = text.getBytes();
异常处理与资源关闭
务必捕获 IOException,并用 try-with-resources 自动关闭流,防止文件句柄泄露:
byte[] data = "test".getBytes(StandardCharsets.UTF_8);
try (FileOutputStream fos = new FileOutputStream("data.bin")) {
fos.write(data);
} catch (IOException e) {
System.err.println("写入失败:" + e.getMessage());
}
不复杂但容易忽略细节。关键就三点:用对 write 方法、编码别省略、流要关好。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










