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

缓冲流复制文件(java)

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

缓冲流复制文件(java)

使用缓冲流复制一个文件的效率远远高于使用字节流复制文件
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;




public class Demo01_BufferedOutputSream {

	
	public static void main(String[] args) throws IOException {
		//copy01();//用时194ms
		//copy02();//用时38943ms
		copy03();//用时4ms
		
	}
	
	
	public static void copy01() throws IOException
	{
		FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
		FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		BufferedInputStream bis = new BufferedInputStream(fis);
		long star = System.currentTimeMillis();
		
		int len = 0;
		while((len = bis.read()) != -1){
			bos.write(len);
		}
		long end = System.currentTimeMillis();
		System.out.println("用时" + (end - star) + "ms");	//225ms
		
		bos.flush();
		bos.close();
		bis.close();
	}
	
	
	public static void copy03() throws IOException
	{
		FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
		FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		BufferedInputStream bis = new BufferedInputStream(fis);
		long star = System.currentTimeMillis();
		
		int len = 0;
		byte[] bytes = new byte[102415];	//测试发现当byte数组为5为数时速度最快,当加到6位数时,其速度反而下降了
		while((len = bis.read(bytes)) != -1){
			bos.write(bytes,0,len);
		}
		long end = System.currentTimeMillis();
		System.out.println("用时" + (end - star) + "ms");	//225ms
		
		bos.flush();
		bos.close();
		bis.close();
	}
	
	
	public static void copy02() throws IOException
	{
		FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
		FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
		long star = System.currentTimeMillis();
		
		int len = 0;
		while((len = fis.read()) != -1){
			fos.write(len);
		}
		long end = System.currentTimeMillis();
		System.out.println("用时" + (end - star) + "ms");
		fos.close();
		fis.close();
	}
}

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

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

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