Java輸入輸出流復制文件所用時間對比
更新時間:2016年08月07日 15:58:57 作者:scx_white
這篇文章主要介紹了Java輸入輸出流復制文件所用時間對比的相關資料,非常不錯,具有參考解決價值,需要的朋友可以參考下
廢話不多說,關鍵代碼如下所述:
package com.edu.xynu;
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 IOUnitCopy {
//按字節(jié)
public static void copyByByte(File srcFile,File destFile) throws IOException{
FileInputStream fis=new FileInputStream(srcFile);
FileOutputStream fos=new FileOutputStream(destFile);
int i;
while((i=fis.read())!=-1){
fos.write(i);
}
fis.close();
fos.close();
}
//按字節(jié)數(shù)組
public static void copyByByteArray(File srcFile,File destFile) throws IOException{
FileInputStream fis=new FileInputStream(srcFile);
FileOutputStream fos=new FileOutputStream(destFile);
byte []buf=new byte[10*1024];
int i;
while((i=fis.read(buf, 0, buf.length))!=-1){
fos.write(buf, 0, i);
}
fis.close();
fos.close();
}
//字節(jié)緩沖流
public static void copyByBuff(File srcFile,File destFile) throws IOException{
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile));
int i;
while((i=bis.read())!=-1){
bos.write(i);
}
bos.flush();
bis.close();
bos.close();
}
//字節(jié)數(shù)組批量讀取 緩沖輸出流寫入
public static void copyByBuffArray(File srcFile,File destFile) throws IOException{
FileInputStream bis=new FileInputStream(srcFile);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile));
byte [] buf=new byte[10*1024];
int len;
while((len=bis.read(buf,0,buf.length))!=-1){
bos.write(buf,0,len);
}
bos.flush();
bis.close();
bos.close();
}
}
package com.edu.xynu;
import java.io.File;
import java.io.IOException;
public class IOUnitsCopyTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
long start=System.currentTimeMillis();
// IOUnitCopy.copyByByte(new File("c:\\1.mp3"), new File(
// "c:\\2.mp3"));//90713ms
// IOUnitCopy.copyByByteArray(new File("c:\\1.mp3"), new File(
// "c:\\3.mp3"));//41ms
// IOUnitCopy.copyByBuff(new File("c:\\1.mp3"), new File(
// "c:\\4.mp3"));//556ms
// IOUnitCopy.copyByByteArray(new File("c:\\1.mp3"), new File(
// "c:\\5.mp3"));//30ms
long end=System.currentTimeMillis();
System.out.println(end-start);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
測試文件是

相關文章
使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑記錄
這篇文章主要介紹了使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java集合Map的clear與new Map區(qū)別詳解
這篇文章主要介紹了Java集合Map的clear與new Map區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
Java二維數(shù)組實現(xiàn)數(shù)字拼圖效果
這篇文章主要為大家詳細介紹了Java二維數(shù)組實現(xiàn)數(shù)字拼圖效果,控制臺可以對空格進行移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
SpringBoot 使用 OpenAPI3 規(guī)范整合 knife4j的詳細過程
Swagger工具集使用OpenAPI規(guī)范,可以生成、展示和測試基于OpenAPI規(guī)范的API文檔,并提供了生成客戶端代碼的功能,本文給大家介紹SpringBoot使用OpenAPI3規(guī)范整合knife4j的詳細過程,感興趣的朋友跟隨小編一起看看吧2023-12-12
SpringBoot3使用?自定義注解+Jackson實現(xiàn)接口數(shù)據(jù)脫敏的步驟
本文介紹了一種以優(yōu)雅的方式實現(xiàn)對接口返回的敏感數(shù)據(jù),如手機號、郵箱、身份證等信息的脫敏處理,這種方法也是企業(yè)常用方法,話不多說我們一起來看一下吧2024-03-03
Spring?Boot?集成?Quartz并使用Cron?表達式實現(xiàn)定時任務
本篇文章介紹了如何在?Spring?Boot?中集成?Quartz?進行定時任務調度,并通過?Cron?表達式?控制任務執(zhí)行時間,Quartz?提供了更強大的任務調度能力,比?@Scheduled?注解更靈活,適用于復雜的定時任務需求2025-04-04

