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
- ubuntu下檔案複製Ubuntu
- Java-IO:複製檔案Java
- win10複製檔案速度慢怎麼辦_win10複製檔案速度非常慢的解決教程Win10
- win10系統下怎麼加快檔案複製速度Win10
- [java IO流]之檔案複製Java
- win10複製小檔案速度太慢怎麼辦 win10複製檔案速度慢怎麼解決Win10
- 帶進度條複製檔案代替copyfile
- 檔案內容比較
- 複製檔案githubGithub
- 在 Linux 中用 Meld以圖形方式比較檔案和資料夾Linux
- VisualDiffer for mac (檔案比較工具)Mac
- 巧用檔案影像比較工具Kaleidoscope,幫您找出檔案的不同
- Java IO 流之拷貝(複製)檔案Java
- 比較檔案是否相同,(比較MD5值)
- 在Linux中,如何比較兩個檔案差異?Linux
- UltraCompare for Mac「Macos檔案比較工具」Mac
- Kaleidoscope for Mac,檔案影像比較工具Mac
- 檔案和影像比較工具Kaleidoscope
- UltraCompare 21 for Mac 檔案比較工具Mac
- Beyond Compare for Mac(檔案比較對比工具)Mac
- Go語言複製檔案Go
- mysql檔案複製遷移MySql
- netcdf檔案複製並修改
- java 位元組流檔案複製方法總結Java
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- 使用PowerShell比較本地文字檔案與Web上的文字檔案是否相同Web
- Kaleidoscope for Mac(檔案和影像比較工具)Mac
- Mac檔案和影像比較工具:KaleidoscopeMac
- 檔案和影像比較工具:Kaleidoscope MacMac
- JAVA檔案下載Java
- git複製一份檔案Git
- Java多種寫檔案方式Java
- Beyond Compare 4 for Mac:你的檔案比較神器Mac
- 檔案批次查詢複製匯出,按檔名批次查詢檔案,按檔案內容批次查詢檔案
- 第九天- 檔案操作 r w a 檔案複製/修改
- 比對檔案sam檔案的解讀