使用字节流完成文件的复制
计算机按照二进制进行存储,无论你存储的是什么数据,底层都是二进制的数据流,一般读取文件可以按照字符流和字节流两种方式读取,读取文件之后通过相应的编码软件进行解码,就能变成不同的文件。
我们对数据的操作也只是对底层数据的改变进行操作,使用字节流来拷贝文件,能让我们跟容易理解底层数据的迁移方式。
其实我只是觉得自己代码的迁移比系统自带的拷贝更加的快。
so,直接看代码:
public static void main(String[] args) throws IOException {
//用来计算程序运行的时间 从1970.01.01 00:00:00到现在的毫秒值
long start_time = System.currentTimeMillis();
//创建文件字节输入流
FileInputStream in=new FileInputStream("D:\\IDEA\\ideaIU.zip");
//创建文件字节输出流
FileOutputStream out=new FileOutputStream("D:\\code\\ideaIU.zip");
//将字节流整合成字节数组写入
//每次读取文件的大小会很大程度影响拷贝速度,并不是越大越好,也不是越小越好
byte []bs =new byte[1*1024*1024];//1M每次读入1M,
//用于标记,是否结束
int end=-1;
//一边写入,一边写出
while ((end=in.read(bs))!=-1){
//则输出字节流
out.write(bs,0,end);
//刷新缓冲区
out.flush();
}
//关流
in.close();
out.close();
//输出结束时间
long end_time=System.currentTimeMillis();
//计算拷贝时间
System.out.println("移动这个文件一共用时"+(end_time-start_time)/1000+"秒");
}
我这里用这个代码移动了一个1G大小的文件,用时大约10S