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