字节流文件拷贝使用缓冲数组提高效率

package io;


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


public class Test4 {


//拷贝本件
//先使用输入流把文件读取
//然后使用输出流把内容写出到文件中
public static void main(String[] args) throws IOException {

//一个字节一个字节读取   然后一个字节一个字节写入
FileInputStream file=new FileInputStream("e://aa//1.mp4");
FileOutputStream file1=new FileOutputStream("e://2.mp4");
int read=file.read();
while(read!= -1){
System.out.println(read);
file1.write(read);
read=file.read();

}

//关流
file1.close();
file.close();


}

}



运行了10s才拷贝7.84MB,原文件45.6MB

现在用缓冲数组进行拷贝

package io;


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


public class Test5 {
public static void main(String[] args) throws IOException {

//一个字节一个字节读取   然后一个字节一个字节写入
FileInputStream file=new FileInputStream("e://aa//1.mp4");
FileOutputStream file1=new FileOutputStream("e://2.mp4");
//int read=file.read();
//file1.write(b, off, len);    b是缓冲数组   off  目标数组的b的起始偏移量   len 读取的最大字节量
byte []arr=new byte[1024];
int i=file.read(arr);//一次性读取1024个字节  并将读取的数据存储到arr中  返回值是实际上读取的byte长度

//一次性读取1024个字节   从偏移量开始写多少个字节   也是实际读取了多少个字节
while(i!= -1){
file1.write(arr, 0, i);
i=file.read(arr);


}

//关流
file1.close();
file.close();
}

}


运行过一段时间  3s左右  拷贝完成




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值