Javaによるファイルのコピーと進捗の表示

1449 ワード

Javaによるファイルのコピーと進捗の表示
最近Javaを学んで、今日1つのファイルのコードを複製することをして、主にBufferedInputStreamとBufferedOutputStreamを通じてファイルに対して複製を行います
技術的な含有量はありませんが、私のテストでは、1 G以上のファイルでは、コピー時にbyte[]配列のサイズが大きいほど速くなり、1 G未満のファイルではbyte[]配列が
の大きさは5 Mぐらいが一番速くて、今私はテストして、Windowsのコピーより最大で40秒速いです.はい、コードをつけます.
/**
  Java         

Author:ylqHUST
*/

import java.io.*;
public class Copy
{
	public static void main(String[] args)throws Exception//        ,         
	{
		FileInputStream fis=new FileInputStream("../BT5R3-KDE-32.iso");//        
		FileOutputStream fos=new FileOutputStream("BT5R3-KDE-32.iso");//            
		BufferedInputStream bufis=new BufferedInputStream(fis);
		BufferedOutputStream bufos=new BufferedOutputStream(fos);
		byte[] by=new byte[1024*1024*150];//byte[]     ,             ,1G    5M。1G  150M,     
		int len;
		boolean flag=true;
		long f=System.nanoTime();
		double begin=bufis.available();
		while(flag)
		{
			len=bufis.read(by);
			if(len==-1)
			{
				flag=false;
				continue;
			}
			bufos.write(by,0,len);
			bufos.flush();
			System.out.print("\r                                         \r"+(1-bufis.available()/begin)*100+"%");//    ,      
			//(2G  ,          0.0%,         ,   ,       ,   
		}
		bufos.close();
		bufis.close();
		long e=System.nanoTime();
		System.out.println("
"+(e-f)/1000000000+" ");// } } // 3G , 120

転載して出典を明記する