用缓冲字节流,复制一个照片

本文详细介绍了一个使用Java进行文件复制的示例,通过BufferedInputStream和BufferedOutputStream实现高效的边读边写操作,确保源文件与目标文件大小一致,避免了复制过程中文件内容的额外增加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码

package d01_TestInput;/*
 * zt
 * 2020/8/7
 * 12:02
 *边读边写
 */

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class CopyFiel {
    public static void main(String[] args) throws Exception {
        //1.创建缓冲流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("e:\\aaa\\1.jpg"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("e:\\aaa\\2.jpg"));
        //2.边读编写
        byte[] buf = new byte[1024];
        int len = 0;
        while((len=bis.read(buf))!=-1){
            //bos.write(buf,0,len); 0 len 保证两个文件大小一样,要不然复制后的文件会超过源文件
            bos.write(buf,0,len);
            bos.flush();
        }
        //关闭
        bis.close();
        bos.close();
        System.out.println("赋值完毕");
    }
}

2.运行结果

赋值完毕

Process finished with exit code 0

在这里插入图片描述
要想两个图片的大小是一样的必须在 bos.write(buf,0,len);里面加0,len。
防止到最后一次循环的时候,复制整个数组

//bos.write(buf,0,len); 0 len 保证两个文件大小一样,要不然复制后的文件会超过源文件
            bos.write(buf,0,len);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值