Java实现图片拷贝(使用FileInputStream、FileOutputStream)

文件拷贝:此次拷贝目标是一张图片

图片是二进制文件,所以采用字节流处理

目标:将D:/TestFile/1/rose.jpg拷贝到 D:/TestFile/2/下

思路:用FileInputStream和FileOutPutStream,一边读一边写,读完了也写完了(读一部分写一部分)

可以一次读一个字节,也可以一次读多个字节。

代码如下:

package filecopy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件拷贝:拷贝一张图片
 * 图片是二进制文件,所以用字节流处理
 * 目标:将D:/TestFile/1/rose.jpg拷贝到 D:/TestFile/2/下
 * 思路:用FileInputStream和FileOutPutStream,一边读一边写,读完了也写完了(读一部分写一部分)
 */
public class FileCopy {
    public static void main(String[] args) {
        try {
            //第一种方式,用read(byte[] b) 和 write(byte[] b, int off, int len),一次读多个字节,这种效率高
            FileInputStream fileInputStream = new FileInputStream("D:/TestFile/1/rose.jpg");
            FileOutputStream fileOutputStream = new FileOutputStream("D:/TestFile/2/rose.jpg",true);
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = fileInputStream.read(b)) != -1){
                //注意不能直接用write(b),因为读到最后是不满一个数组大小的,还按一个数组来写就会出错
                fileOutputStream.write(b,0,len);
            }
            System.out.println("图片拷贝成功!");

            //第二种方式 用read(int b) 和write(int b),一个字节一个字节读
            //因为上一次输入流读完已经到达了末尾,所以要再新开辟流
            FileInputStream fileInputStream2 = new FileInputStream("D:/TestFile/1/rose.jpg");
            FileOutputStream fileOutputStream2 = new FileOutputStream("D:/TestFile/2/rose2.jpg",true);
            int data = 0;
            while ((data = fileInputStream2.read()) != -1){
                fileOutputStream2.write(data);
            }
            System.out.println("梅开二度");

            fileInputStream.close();
            fileOutputStream.close();
            fileInputStream2.close();
            fileOutputStream2.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值