public static void copy2(){
try (
//创建输出流-被复制到的文件路径
FileOutputStream fos=new FileOutputStream("file/newc2.txt");
//创建输入流-复制的文件路径
FileInputStream fis=new FileInputStream("file/c.txt")
) {
while(true){
//创建接收数组
byte[] bs = new byte[1024];
//读取本次内容并接收
int n = fis.read(bs);
if (n == -1) {
break;
}
//将本次读取内容写入到目标文件
fos.write(bs);
}
System.out.println("复制成功!");
} catch (FileNotFoundException e) {
System.out.println("文件路径不正确");
} catch (IOException e) {
System.out.println("读写失败!");
} catch (Exception e) {
System.out.println("未知异常!");
e.printStackTrace();
}
}
}
原因:
首先创建输出流的原因是为了确保目标文件已经存在或能够被创建。如果目标文件不存在,输出流会尝试创建该文件。如果目标文件已存在,输出流将覆盖原有文件的内容。
另外,创建输出流也是为了准备写入数据的缓冲区。输出流会在内存中创建一个缓冲区,将数据写入缓冲区后再批量写入目标文件,这样可以提高写入效率。
因此,在进行文件复制时,首先创建输出流是为了确保目标文件的准备和数据写入的准备。然后,通过输入流读取源文件的数据,并使用输出流将数据写入目标文件。