java檔案複製方式在100MB檔案條件下速度的比較
package com.imooc.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOUtil {
public static void copyFile(File srcFile,File destFile)throws IOException{
if(!srcFile.exists()){
throw new IllegalArgumentException("檔案:"+srcFile+"不存在");
}
if(!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"不是檔案");
}
FileInputStream in = new FileInputStream(srcFile);
FileOutputStream out = new FileOutputStream(destFile);
byte[] buf = new byte[8*1024];
int b ;
while((b = in.read(buf,0,buf.length))!=-1){
out.write(buf,0,b);
out.flush();
}
in.close();
out.close();
}
public static void copyFileByBuffer(File srcFile,File destFile)throws IOException{
if(!srcFile.exists()){
throw new IllegalArgumentException("檔案:"+srcFile+"不存在");
}
if(!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"不是檔案");
}
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(destFile));
int c ;
while((c = bis.read())!=-1){
bos.write(c);
bos.flush();
}
bis.close();
bos.close();
}
public static void copyFileByBuffer2(File srcFile,File destFile)throws IOException{
if(!srcFile.exists()){
throw new IllegalArgumentException("檔案:"+srcFile+"不存在");
}
if(!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"不是檔案");
}
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(destFile));
byte[] buf = new byte[8*1024];
int b ;
while((b = bis.read(buf,0,buf.length))!=-1){
bos.write(buf,0,b);
bos.flush();
}
bis.close();
bos.close();
}
public static void copyFileByByte(File srcFile,File destFile)throws IOException{
if(!srcFile.exists()){
throw new IllegalArgumentException("檔案:"+srcFile+"不存在");
}
if(!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"不是檔案");
}
FileInputStream in = new FileInputStream(srcFile);
FileOutputStream out = new FileOutputStream(destFile);
int c ;
while((c = in.read())!=-1){
out.write(c);
out.flush();
}
in.close();
out.close();
}
}
package com.imooc.io;
import java.io.File;
import java.io.IOException;
public class IOUtilTest4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
File f=new File("e:\guanjujinqinpp.apk");
//按位元組批次讀取方式複製檔案時間測試100MB以上
long start = System.currentTimeMillis();
IOUtil.copyFile(f, new File(
"e:\test1.apk"));
long end = System.currentTimeMillis();
System.out.println("檔案大小"+f.length()/1024/1024+"MBt"+"位元組批次讀取方式複製檔案所需時間"+(end - start)+"ms" );
//按批次緩衝方式讀取檔案複製檔案時間測試100MB以上
start = System.currentTimeMillis();
IOUtil.copyFileByBuffer2(f, new File(
"e:\test2.apk"));
end = System.currentTimeMillis();
System.out.println("檔案大小"+f.length()/1024/1024+"MBt"+"緩衝批次讀取方式複製檔案所需時間"+(end - start)+"ms" );
//按緩衝方式讀取方式複製檔案測試100MB以上
start = System.currentTimeMillis();
IOUtil.copyFileByBuffer(f, new File(
"e:\test3.apk"));
end = System.currentTimeMillis();
System.out.println("檔案大小"+f.length()/1024/1024+"MBt"+"緩衝讀取方式複製檔案所需時間"+(end - start) +"ms");
//按位元組讀取方式複製檔案測試100MB以上
start = System.currentTimeMillis();
IOUtil.copyFileByByte(f, new File(
"e:\test4.apk"));
end = System.currentTimeMillis();
System.out.println("檔案大小"+f.length()/1024/1024+"MBt"+"位元組讀取方式複製檔案所需時間"+(end - start)+"ms" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
透過比較,可以看出批次複製的優勢,但是在100MB左右的檔案複製條件下,批次緩衝比批次位元組並沒有太大的優勢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2798939/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java I/O流 複製檔案速度對比Java
- Java位元組流檔案複製及效率比較Java
- Java實現檔案複製的四種方式Java
- ubuntu下檔案複製Ubuntu
- unix下複製檔案(轉)
- Java-IO:複製檔案Java
- Java NIO複製檔案功能Java
- Java: 複製檔案最快方法Java
- 在WINDOWS下使用xcopy遠端複製檔案Windows
- asm下的控制檔案的複製ASM
- win10複製檔案速度慢怎麼辦_win10複製檔案速度非常慢的解決教程Win10
- win10系統下怎麼加快檔案複製速度Win10
- oracle控制檔案複製、移動方式Oracle
- [java IO流]之檔案複製Java
- win10複製小檔案速度太慢怎麼辦 win10複製檔案速度慢怎麼解決Win10
- 帶進度條複製檔案代替copyfile
- 檔案內容比較
- nc複製檔案
- 複製檔案githubGithub
- java複製檔案時遇到的問題Java
- smali檔案對比java檔案Java
- Java檔案下載的幾種方式Java
- Linux下檔案差異比較工具Linux
- 10G下從ASM複製檔案到檔案系統ASM
- Java檔案下載 幾種方式Java
- 隱藏檔案複製
- Java IO 流之拷貝(複製)檔案Java
- 在 Linux 中用 Meld以圖形方式比較檔案和資料夾Linux
- 比較檔案是否相同,(比較MD5值)
- VisualDiffer for mac (檔案比較工具)Mac
- dll的def檔案與__declspec(dllexport)匯出函式方式比較Export函式
- mysql檔案複製遷移MySql
- Go語言複製檔案Go
- C# 批量複製檔案C#
- java 位元組流檔案複製方法總結Java
- 巧用檔案影像比較工具Kaleidoscope,幫您找出檔案的不同
- FFmpeg在遊戲影片錄製中的應用:畫質與檔案大小的綜合比較遊戲
- awk比較檔案內容的差異