亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java文件快速copy復(fù)制實(shí)例代碼

 更新時(shí)間:2021年01月04日 15:20:26   作者:Java勸退師、  
這篇文章主要給大家介紹了關(guān)于Java文件快速copy復(fù)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近學(xué)習(xí)netty的時(shí)候發(fā)現(xiàn)nio包下有個(gè)FileChannel類(lèi),經(jīng)過(guò)了解這個(gè)類(lèi)作用是個(gè)專(zhuān)門(mén)負(fù)責(zé)傳輸文件的通道,支持多線程,而且經(jīng)過(guò)反復(fù)多次測(cè)試FileChannel復(fù)制文件的速度比BufferedInputStream/BufferedOutputStream復(fù)制文件的速度快了近三分之一。在復(fù)制大文件的時(shí)候更加體現(xiàn)出FileChannel的速度優(yōu)勢(shì)。而且FileChannel是多并發(fā)線程安全的。代碼也比較簡(jiǎn)潔

代碼貼下

package com.niu.nio;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
 
/**
 * @description:
 * @author: nxq email: niuxiangqian163@163.com
 * @createDate: 2020/12/28 5:48 下午
 * @updateUser: nxq email: niuxiangqian163@163.com
 * @updateDate: 2020/12/28 5:48 下午
 * @updateRemark:
 * @version: 1.0
 **/
public class Main {
 public static void main(String[] args) {
 quickCopy(new File("/Users/laoniu/a.txt"),new File("/Users/laoniu/b.txt"));
 }
 /**
  * 快速copy
  * @author nxq
  * @param src: 源文件
  * @param target: 目標(biāo)文件
  * @return void
  */
 public static void quickCopy(File src, File target){
  try(FileInputStream inputStream = new FileInputStream(src);
   FileOutputStream outputStream = new FileOutputStream(target);
   FileChannel inputChannel = inputStream.getChannel(); // 得到源文件通道
   FileChannel outputChannel = outputStream.getChannel()// 得到目標(biāo)文件通道
  ) {
   //將源文件數(shù)據(jù)通達(dá)連通到目標(biāo)文件通道進(jìn)行傳輸
   inputChannel.transferTo(0,inputChannel.size(),outputChannel);
  }catch (Exception e){
   e.printStackTrace();
  }
 }
}

關(guān)于這種io流關(guān)閉方式不清楚的同學(xué)請(qǐng)看我這篇文章:http://chabaoo.cn/article/203438.htm

測(cè)試對(duì)比

復(fù)制目標(biāo)文件:

4.76GB

代碼

package com.niu.nio;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
 
/**
 * @description:
 * @author: nxq email: niuxiangqian163@163.com
 * @createDate: 2020/12/28 5:48 下午
 * @updateUser: nxq email: niuxiangqian163@163.com
 * @updateDate: 2020/12/28 5:48 下午
 * @updateRemark:
 * @version: 1.0
 **/
public class Main {
 public static void main(String[] args) {
  long start = System.currentTimeMillis();
  File src = new File("/Users/laoniu/Downloads/installer/cn_windows_10_business_edition_version_1809_updated_sept_2018_x64_dvd_fc5542c0.iso"); //文件4.76GB
  quickCopy(src,new File("/Users/laoniu/test/a.iso"));
   long end = System.currentTimeMillis();
  System.out.println("FileChannel復(fù)制:"+(end - start));
 
   start = System.currentTimeMillis();
  copy(src,new File("/Users/laoniu/test/b.iso"));
   end = System.currentTimeMillis();
  System.out.println("普通復(fù)制:"+(end - start));
 
 
 }
 /**
  * 快速copy
  * @author nxq
  * @param src: 源文件
  * @param target: 目標(biāo)文件
  * @return void
  */
 public static void quickCopy(File src, File target){
  try(FileInputStream inputStream = new FileInputStream(src);
   FileOutputStream outputStream = new FileOutputStream(target);
   FileChannel inputChannel = inputStream.getChannel(); // 得到源文件文件通道
   FileChannel outputChannel = outputStream.getChannel()// 得到目標(biāo)文件通道
  ) {
   //將源文件數(shù)據(jù)通達(dá)連通到目標(biāo)文件通道進(jìn)行傳輸
   inputChannel.transferTo(0,inputChannel.size(),outputChannel);
  }catch (Exception e){
   e.printStackTrace();
  }
 }
 /**
  * 普通copy
  * @author nxq
  * @param src:
  * @param target:
  * @return void
  */
 public static void copy(File src, File target){
  try(FileInputStream inputStream = new FileInputStream(src);
   FileOutputStream outputStream = new FileOutputStream(target);
  ) {
   byte[] data = new byte[1024*1024]; //加大每次讀取的數(shù)據(jù)多少
   int len;
   while ((len = inputStream.read(data))!=-1){
    outputStream.write(data,0,len);
   }
 
  }catch (Exception e){
   e.printStackTrace();
  }
 }
 
}

加大每次讀取的數(shù)據(jù)到1024*1024,否則更慢

結(jié)果

總結(jié)

到此這篇關(guān)于Java文件快速copy復(fù)制的文章就介紹到這了,更多相關(guān)Java文件快速copy復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決java.lang.IllegalArgumentException異常問(wèn)題

    解決java.lang.IllegalArgumentException異常問(wèn)題

    這篇文章主要介紹了解決java.lang.IllegalArgumentException異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • spring中@ComponentScan自動(dòng)掃描并指定掃描規(guī)則

    spring中@ComponentScan自動(dòng)掃描并指定掃描規(guī)則

    本文主要介紹了spring中@ComponentScan自動(dòng)掃描并指定掃描規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Maven中的庫(kù)repository詳解

    Maven中的庫(kù)repository詳解

    Maven中要配置庫(kù),可以有多種方式,最直接的是在項(xiàng)目中的pom.xml文件中,通過(guò)<repositories>配置庫(kù),這樣配置的庫(kù)僅適用于當(dāng)前項(xiàng)目,這篇文章主要介紹了Maven中的庫(kù)(repository),需要的朋友可以參考下
    2024-01-01
  • 一文帶你全面了解Java?Properties類(lèi)

    一文帶你全面了解Java?Properties類(lèi)

    Properties是JDK1.0中引入的java類(lèi),目前也在項(xiàng)目中大量使用,主要用來(lái)讀取外部的配置,那除了這個(gè),你對(duì)它其他的一些api也了解嗎??你了解它是怎么實(shí)現(xiàn)的嗎??如果不清楚的話,就通過(guò)本篇文章帶你一探究竟
    2022-09-09
  • 詳解Java引用類(lèi)型的參數(shù)也是值傳遞

    詳解Java引用類(lèi)型的參數(shù)也是值傳遞

    這篇文章主要介紹了Java引用類(lèi)型的參數(shù)也是值傳遞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MyBatis-Plus 自動(dòng)填充的實(shí)現(xiàn)示例

    MyBatis-Plus 自動(dòng)填充的實(shí)現(xiàn)示例

    MyBatis-Plus 提供了自動(dòng)填充功能,幫助開(kāi)發(fā)者在插入或更新數(shù)據(jù)時(shí),自動(dòng)為某些字段賦值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • SpringMVC視圖轉(zhuǎn)發(fā)重定向區(qū)別及控制器詳解

    SpringMVC視圖轉(zhuǎn)發(fā)重定向區(qū)別及控制器詳解

    這篇文章主要為大家介紹了SpringMVC視圖轉(zhuǎn)發(fā)重定向區(qū)別及控制器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • JAVA實(shí)現(xiàn)數(shù)字大寫(xiě)金額轉(zhuǎn)換的方法

    JAVA實(shí)現(xiàn)數(shù)字大寫(xiě)金額轉(zhuǎn)換的方法

    這篇文章主要介紹了JAVA實(shí)現(xiàn)數(shù)字大寫(xiě)金額轉(zhuǎn)換的方法,涉及java針對(duì)字符串與數(shù)組的遍歷與轉(zhuǎn)換相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Springboot中Instant時(shí)間傳參及序列化詳解

    Springboot中Instant時(shí)間傳參及序列化詳解

    這篇文章主要介紹了Springboot中Instant時(shí)間傳參及序列化詳解,Instant是Java8引入的一個(gè)精度極高的時(shí)間類(lèi)型,可以精確到納秒,但實(shí)際使用的時(shí)候不需要這么高的精確度,通常到毫秒就可以了,需要的朋友可以參考下
    2023-11-11
  • Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題

    Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題

    這篇文章主要介紹了Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論