Java文件复制为什么先创建输出流

    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();
        }
    }
}

原因:

首先创建输出流的原因是为了确保目标文件已经存在或能够被创建。如果目标文件不存在,输出流会尝试创建该文件。如果目标文件已存在,输出流将覆盖原有文件的内容。

另外,创建输出流也是为了准备写入数据的缓冲区。输出流会在内存中创建一个缓冲区,将数据写入缓冲区后再批量写入目标文件,这样可以提高写入效率。

因此,在进行文件复制时,首先创建输出流是为了确保目标文件的准备和数据写入的准备。然后,通过输入流读取源文件的数据,并使用输出流将数据写入目标文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值