亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

4種java復制文件的方式

2019-11-26 15:02:15
字體:
來源:轉載
供稿:網友

盡管Java提供了一個可以處理文件的IO操作類,但是沒有一個復制文件的方法。復制文件是一個重要的操作,當你的程序必須處理很多文件相關的時候。然而有幾種方法可以進行Java文件復制操作,下面列舉出4中最受歡迎的方式。

1. 使用FileStreams復制

這是最經典的方式將一個文件的內容復制到另一個文件中。 使用FileInputStream讀取文件A的字節,使用FileOutputStream寫入到文件B。 這是第一個方法的代碼:

private static void copyFileUsingFileStreams(File source, File dest)    throws IOException {    InputStream input = null;    OutputStream output = null;    try {      input = new FileInputStream(source);      output = new FileOutputStream(dest);          byte[] buf = new byte[1024];          int bytesRead;          while ((bytesRead = input.read(buf)) > 0) {        output.write(buf, 0, bytesRead);      }  } finally {    input.close();    output.close();  }}

正如你所看到的我們執行幾個讀和寫操作try的數據,所以這應該是一個低效率的,下一個方法我們將看到新的方式。

2. 使用FileChannel復制

Java NIO包括transferFrom方法,根據文檔應該比文件流復制的速度更快。這是第二種方法的代碼:

private static void copyFileUsingFileChannels(File source, File dest) throws IOException {      FileChannel inputChannel = null;      FileChannel outputChannel = null;    try {    inputChannel = new FileInputStream(source).getChannel();    outputChannel = new FileOutputStream(dest).getChannel();    outputChannel.transferFrom(inputChannel, 0, inputChannel.size());  } finally {    inputChannel.close();    outputChannel.close();  }}

3. 使用Commons IO復制

Apache Commons IO提供拷貝文件方法在其FileUtils類,可用于復制一個文件到另一個地方。它非常方便使用Apache Commons FileUtils類時,您已經使用您的項目?;旧?這個類使用Java NIO FileChannel內部。 這是第三種方法的代碼:

private static void copyFileUsingApacheCommonsIO(File source, File dest)    throws IOException {  FileUtils.copyFile(source, dest);}

4. 使用Java7的Files類復制

如果你有一些經驗在Java 7中你可能會知道,可以使用復制方法的Files類文件,從一個文件復制到另一個文件。 這是第四個方法的代碼:

private static void copyFileUsingJava7Files(File source, File dest)    throws IOException {      Files.copy(source.toPath(), dest.toPath());}

5. 測試

現在看到這些方法中的哪一個是更高效的,我們會復制一個大文件使用每一個在一個簡單的程序。 從緩存來避免任何性能明顯我們將使用四個不同的源文件和四種不同的目標文件。 讓我們看一下代碼:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.channels.FileChannel;import java.nio.file.Files;import org.apache.commons.io.FileUtils; public class CopyFilesExample {   public static void main(String[] args) throws InterruptedException,      IOException {     File source = new File("C://Users//nikos7//Desktop//files//sourcefile1.txt");    File dest = new File("C://Users//nikos7//Desktop//files//destfile1.txt");     // copy file using FileStreams    long start = System.nanoTime();    long end;    copyFileUsingFileStreams(source, dest);    System.out.println("Time taken by FileStreams Copy = "        + (System.nanoTime() - start));     // copy files using java.nio.FileChannel    source = new File("C://Users//nikos7//Desktop//files//sourcefile2.txt");    dest = new File("C://Users//nikos7//Desktop//files//destfile2.txt");    start = System.nanoTime();    copyFileUsingFileChannels(source, dest);    end = System.nanoTime();    System.out.println("Time taken by FileChannels Copy = " + (end - start));     // copy file using Java 7 Files class    source = new File("C://Users//nikos7//Desktop//files//sourcefile3.txt");    dest = new File("C://Users//nikos7//Desktop//files//destfile3.txt");    start = System.nanoTime();    copyFileUsingJava7Files(source, dest);    end = System.nanoTime();    System.out.println("Time taken by Java7 Files Copy = " + (end - start));     // copy files using apache commons io    source = new File("C://Users//nikos7//Desktop//files//sourcefile4.txt");    dest = new File("C://Users//nikos7//Desktop//files//destfile4.txt");    start = System.nanoTime();    copyFileUsingApacheCommonsIO(source, dest);    end = System.nanoTime();    System.out.println("Time taken by Apache Commons IO Copy = "        + (end - start));   }   private static void copyFileUsingFileStreams(File source, File dest)      throws IOException {    InputStream input = null;    OutputStream output = null;    try {      input = new FileInputStream(source);      output = new FileOutputStream(dest);      byte[] buf = new byte[1024];      int bytesRead;      while ((bytesRead = input.read(buf)) > 0) {        output.write(buf, 0, bytesRead);      }    } finally {      input.close();      output.close();    }  }   private static void copyFileUsingFileChannels(File source, File dest)      throws IOException {    FileChannel inputChannel = null;    FileChannel outputChannel = null;    try {      inputChannel = new FileInputStream(source).getChannel();      outputChannel = new FileOutputStream(dest).getChannel();      outputChannel.transferFrom(inputChannel, 0, inputChannel.size());    } finally {      inputChannel.close();      outputChannel.close();    }  }   private static void copyFileUsingJava7Files(File source, File dest)      throws IOException {    Files.copy(source.toPath(), dest.toPath());  }   private static void copyFileUsingApacheCommonsIO(File source, File dest)      throws IOException {    FileUtils.copyFile(source, dest);  } }

輸出:

Time taken by FileStreams Copy = 127572360Time taken by FileChannels Copy = 10449963Time taken by Java7 Files Copy = 10808333Time taken by Apache Commons IO Copy = 17971677

正如您可以看到的FileChannels拷貝大文件是最好的方法。如果你處理更大的文件,你會注意到一個更大的速度差。這是一個示例,該示例演示了Java中四種不同的方法可以復制一個文件。

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
菠萝蜜影院一区二区免费| 在线视频国产日韩| 国产精品视频色| 中文字幕精品影院| 成人精品在线观看| 日本国产高清不卡| 亚洲第一中文字幕| 欧美成人精品激情在线观看| 国内精品模特av私拍在线观看| 51精品国产黑色丝袜高跟鞋| 日韩欧美中文字幕在线观看| 久久在线免费观看视频| 日韩hd视频在线观看| 在线播放国产一区中文字幕剧情欧美| 国产视频久久久| 国外日韩电影在线观看| 亚洲视频在线看| 国产欧美一区二区三区四区| 欧美国产一区二区三区| 午夜精品蜜臀一区二区三区免费| 亚洲国产日韩欧美在线图片| 久久99久久99精品中文字幕| 国产精品免费一区二区三区都可以| 精品国产91久久久久久老师| 亚洲新声在线观看| 日韩欧美精品网址| 亚洲欧美日韩第一区| 精品中文视频在线| 91人成网站www| 久久久久久久久电影| 欧美精品一二区| 欧美富婆性猛交| 欧美日韩免费区域视频在线观看| 中文字幕综合在线| 国产精品久久久久久久久久99| 亚洲国产精品va在线看黑人动漫| 国产日韩欧美视频在线| 亚洲第一色在线| 亚洲欧美日韩第一区| 欧美日韩爱爱视频| 欧美精品做受xxx性少妇| 亚洲石原莉奈一区二区在线观看| 国产精品视频一| 亚洲美女自拍视频| 国产不卡一区二区在线播放| 国产精品久久久久久久久免费| 午夜精品久久久久久久久久久久久| 91免费看视频.| 韩日精品中文字幕| 中文字幕亚洲欧美一区二区三区| 91亚洲精品在线| 亚洲影视九九影院在线观看| 日韩国产精品一区| 日韩视频免费大全中文字幕| 日本欧美精品在线| 亚洲美女中文字幕| 亚洲精品美女久久久| 亚洲精品久久在线| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品女视频| 欧美日韩中文字幕在线| 4444欧美成人kkkk| 国产在线观看精品| 粗暴蹂躏中文一区二区三区| 成人激情黄色网| 日本成人精品在线| 国产精品香蕉在线观看| 国产高清视频一区三区| 麻豆精品精华液| 欧美国产在线电影| 亚洲日本成人网| 亚洲va国产va天堂va久久| 久久久国产精彩视频美女艺术照福利| 欧美丰满少妇xxxxx做受| 久久久久久一区二区三区| 亚洲人成电影在线观看天堂色| 日韩中文字幕国产| 自拍偷拍亚洲在线| 午夜精品蜜臀一区二区三区免费| 欧美一区二区影院| 日韩av综合网站| 日韩av中文字幕在线播放| 日韩成人网免费视频| 国产精品青青在线观看爽香蕉| 国内外成人免费激情在线视频网站| 在线看福利67194| 日韩欧美精品在线观看| 久久久久久亚洲精品| 精品一区二区三区四区| 日韩欧美国产视频| 日韩成人小视频| 性色av香蕉一区二区| 国产精品色午夜在线观看| 26uuu另类亚洲欧美日本一| 色先锋久久影院av| 色老头一区二区三区在线观看| 成人黄色在线观看| 亚洲香蕉伊综合在人在线视看| 国产精品亚洲第一区| 91精品视频免费观看| 欧美大片第1页| 亚洲欧美日韩一区二区三区在线| 国产精品第100页| 亚洲视频精品在线| 免费不卡在线观看av| 亚洲国产欧美一区二区三区同亚洲| 国产精品嫩草影院久久久| 中文字幕精品www乱入免费视频| 亚洲欧美制服第一页| 日韩欧美在线观看| 91在线视频成人| 亚洲精品中文字幕有码专区| 1769国内精品视频在线播放| 国产ts一区二区| 成人午夜在线观看| 91精品国产乱码久久久久久久久| 国产精品美女999| 精品国产福利在线| 91九色视频导航| www.xxxx欧美| 精品国偷自产在线视频| 午夜美女久久久久爽久久| 欧美专区第一页| 亚洲精品电影网在线观看| 成人女保姆的销魂服务| 亚洲精品中文字幕女同| 51精品在线观看| 亚洲自拍偷拍网址| 国产精品欧美亚洲777777| 欧美乱妇40p| 最新国产精品亚洲| 久久久久久网址| 亚洲欧洲成视频免费观看| 国产精品一区二区久久久| 亚洲免费福利视频| 亚洲国产精品久久91精品| 中文字幕免费精品一区高清| 最近日韩中文字幕中文| 成人黄色中文字幕| 97超碰国产精品女人人人爽| 欧美久久精品一级黑人c片| 欧美孕妇与黑人孕交| 欧美激情在线播放| 亚洲香蕉伊综合在人在线视看| 亚洲qvod图片区电影| 亚洲女人被黑人巨大进入| 亚洲一区二区三区毛片| 国产成人精品最新| 久久91精品国产91久久久| 亚洲国产高潮在线观看| 日韩精品视频观看| 中文字幕日韩av电影| 在线成人中文字幕| 啪一啪鲁一鲁2019在线视频| 91在线|亚洲| 日韩免费在线电影| 欧美精品xxx| 欧美孕妇与黑人孕交| yw.139尤物在线精品视频| 日韩一区av在线| 国产精品中文字幕在线| 亚洲一区二区福利| 亚洲精品一区av在线播放| 97视频在线观看成人|