栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过java实现文件的复制(缓冲流和基本字节输入输出流对比)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过java实现文件的复制(缓冲流和基本字节输入输出流对比)

缓冲流介绍

基本的字节流就是inputStream和outputstream,比较简单,这里主要介绍一下缓冲流
缓冲流一次可以读取多个数据单元,相对于普通的要快很多,缓冲流的类BufferedInputStream
BufferedOutputStream,相对于普通的字节流,它多了个flush方法,原本的只有读满一个字节数组才能读写,通过flush方法不需要读满,就可以读取

复制流程介绍

复制的流程比较简单,一句话,边读边写,读满一个字符数组,直接写进

代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyVideoTest {
	public static void main(String[] args) throws IOException {
		File f=new File("E:\A.wmv");
		File f2=new File("F:\B.wmv");
		File f3=new File("F:\BB.wmv");
		
		
		//普通流
		InputStream is=new FileInputStream(f);
		OutputStream os=new FileOutputStream(f2);
		byte []b=new byte[100];
		int len=-1;
		long time1 = System.currentTimeMillis();
		while((len=is.read(b))!=-1) {
			os.write(b, 0, len);
		}
		long time2 = System.currentTimeMillis();
		os.close();
		is.close();
		System.out.println((time2-time1)/1000);
		
		
		
		
		//缓冲流
		BufferedInputStream bi=new BufferedInputStream(new FileInputStream(f));
		BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(f3));
		
		byte []bb=new byte[100];
		int len1=-1;
		long time3 = System.currentTimeMillis();
		while((len1=bi.read(bb))!=-1) {
			bo.flush();
			bo.write(bb, 0, len1);
			
		}
		long time4 = System.currentTimeMillis();
		System.out.println((time4-time3)/1000);
		bo.close();
		bi.close();
		
		
	}
}


通过结果可以看出,时间相差还是比较大的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号