java.io.FileOutputStream
文件字节输出流,负责写
从内存到硬盘。
一种构造方法会清空源文件
一种追加内容
FileOutputStream fos = null;
try {
//output.txt不存在时会自动创建!
//这种方式谨慎使用,这种方式会先将原文件清空,然后重新写入。
//fos = new FileOutputStream("output.txt");
//以追加的方式在文件末尾写入。不会清空源文件内容。
fos = new FileOutputStream("output.txt",true);
//开始写
byte[] bytes = {97, 98, 99, 100};
//将byte数组全部写出!
fos.write(bytes);
//将byte数组部分写出
fos.write(bytes,0,2);//再写出ab
fos.write("我是一个中国人!!!".getBytes());
//写完之后,最后一定要刷新一下
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流文件复制
使用FileInputStream + FileOutputStream完成文件的拷贝。
拷贝的过程是一边读 ,一边写。
使用以上的字节流拷贝文件的时候,文件的类型随意,万能的。什么样的文件都能拷贝。
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//创建一个输入流对象
fis = new FileInputStream("D:/psbe.jpg");
//创建一个输出流对象
fos = new FileOutputStream("E:/psbe.jpg");
byte[] bytes = new byte[500];
int readCount = 0;
while ((readCount = fis.read(bytes)) != -1){
fos.write(bytes,0,readCount);
}
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//这里注意分开捕获异常,如果放在一起会导致一个出现异常另外一个不关闭
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}