首先给出一个结论:输出流建立的时候会把文件之前的内容清空,加上true会保留之前的内容。
测试代码如下:
//缓存流输出和输入
public static void ceshiA(String filepath) {
File file=new File(filepath);
try(BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));)
{
byte[] bytes=new byte[(int)file.length()];
bis.read(bytes);
byte[] bytess=bytes;
bos.write(bytess);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//字节流输出与输入
public static void ceshiB(String filepath) {
File file = new File(filepath);
try (FileOutputStream bos = new FileOutputStream(file);
FileInputStream bis = new FileInputStream(file);)
{
byte[] bytes = new byte[(int) file.length()];
bis.read(bytes);
byte[] bytess = bytes;
bos.write(bytess);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
测试结果显示,文件之前的内容会被清空。
先写输入流再写输出流结果也是会被清空,系统在建立输出流的同时,准备向文件中写入东西就会把里面的内容先清空,解决办法就是如下(设置true):
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file,true));)