Java輸入輸出流復(fù)制文件所用時(shí)間對(duì)比
廢話不多說(shuō),關(guān)鍵代碼如下所述:
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ù)組批量讀取 緩沖輸出流寫(xiě)入
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();
}
}
}
測(cè)試文件是

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

