選單

Java檔案複製(更改緩衝區大小)

目錄

Java檔案複製(更改緩衝區大小)

爪哇語 java.io.InputStream,,java.io.OutputStream
介紹使用輸入/輸出流執行複製處理的範例程式。
在使用流的複製處理中,透過增加讀取緩衝區大小,即使是大檔案也可以相對快速地複製。
在範例程式中,可以使用參數指定資料讀取緩衝區大小。

指定的讀取緩衝區是在JavaVM堆中保護的,所以設定太大會導致效率低下。因此,我們在複製檔案時也會檢查有效的資料讀取緩衝區大小。

範例程式


執行

為了複製範例程式文件,我們在C盤下直接準備了一個100MB的文件「100M.txt」。在範例程式中, C:\100M.txt ,以緩衝區大小1000KB為單位讀取資料。 C:\a.txt 複製到。

此範例是在以下環境中執行的。
作業系統:Windows XP
CPU:速龍1.46GHz
記憶體:1GB
JRE:1.6.4

◆執行範例

/** * 執行範例 * @param args */ public static void main(String[] args) { try { copyStream("C:\\100M.txt", "C:\\a.txt",1000); } catch (IOException e) { e.printStackTrace(); } }

◆執行結果


更改緩衝區大小

若要在複製檔案時檢查有效的資料讀取緩衝區大小,請使用 copyStream 的第三個參數作為
以下總結了以 1KB、100KB、1000KB 和 10000KB 為單位的類似複製處理的結果。



雖然僅從上面的結果不能得出結論,但如果以1000KB為單位指定資料讀取緩衝區大小,
結果表明,在複製處理期間,它在堆使用和處理時間方面是高效的。
即使檔案大小增加(約 1GB),也能獲得類似的結果。

另一方面,當複製小檔案(大約1MB或更小)時,增加緩衝區大小會很浪費,所以我認為最好指定100KB左右。

使用 FileChannel 獲得更快的速度


 java.io.InputStream,,java.io.OutputStream
複製處理對於理解輸入/輸出流很重要,但是
J2SE1.4 中引入的新 I/O java.nio.channels.FileChannel#transferTo
透過使用此方法,您可以更有效地複製文件。
接下來我將向您展示如何使用FileChannel輕鬆快速地複製文件。
Java檔案複製(簡單快速)

  • 網址をコピーしました!
目錄