简介
FileOutputStream主要用于写入数据或者文件,如果文件不存在会主动创建文件,适用于写入 raw bytes,如果写入字符应该使用FileWriter。
写入原理
Java程序无法直接写入到磁盘实际调用过程:
Java程序->JVM->OS->OS写入数据方法->写入数据
使用步骤
1.创建对象
通过构造函数创建对象,确定写入文件位置
2.写入数据
通过 write方法把数据写入文件
3.释放资源
释放内存,提高程序效率
构造方法
FileOutputStream(File file)
从一个文件对象中创建
FileOutputStream(String name)
从一个字符串文件名创建
FileOutputStream(File file, boolean append)
追加写/续写
常用方法
// 写入一个字节
write(int b)
// 写入一个字节数组
write(byte[] b)
// 从传入的数组b中,指定起始位置和长度写入
write(byte[] b, int off, int len)
//释放资源
close()
代码
public class Demo05 {
public static void main(String[] args) throws IOException {
//1.创建对象
FileOutputStream fileOutputStream = new FileOutputStream("a.txt");
//2.1写入一个字节
fileOutputStream.write(97);
//2.2 写入一个字节数组
byte[] bytes = {65,66,67,68};
fileOutputStream.write(bytes);
//2.3 write(byte[] b, int off, int len)
fileOutputStream.write(bytes, 1,1);
//3.释放资源
fileOutputStream.close();
}
}
扩展
可以通过string类提供的getbytes方法,把一个字符串转换为字节数组。
fileOutputStream.write("hello world".getBytes(StandardCharsets.UTF_8));
复制文件
public class Demo08 {
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("a.txt");
FileOutputStream outputStream = new FileOutputStream("b.txt");
byte[] bytes = new byte[1024];
int read;
while ((read = fileInputStream.read(bytes)) != -1)
{
outputStream.write(bytes,0,read);
}
fileInputStream.close();
outputStream.close();
}
}