選單

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

目錄

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

在 Java 中 java.io.InputStreamjava.io.OutputStream
本節介紹一個使用輸入/輸出流執行複製操作的範例程式。
在基於流的複製中,增加讀取緩衝區大小可以實現相對較快的複製速度,即使是複製大檔案也是如此。
範例程式可讓您將資料讀取緩衝區大小指定為參數。

指定的讀取緩衝區區域分配在 Java 虛擬機器堆中,因此設定過大會降低效率。所以,在複製檔案時,我們也會檢查最佳資料讀取緩衝區大小。

範例程式


執行

為了複製範例程式文件,我在 C 盤根目錄下創建了一個名為“100M.txt”的 100MB 文件。在範例程式中, C:\100M.txt 資料以 1000KB 的緩衝區大小讀取。 C:\a.txt 將其複製到[此位置]。

樣本在以下環境下運作。
作業系統:Windows XP
CPU:Athlon 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.print } }

◆執行結果


更改緩衝區大小

為了在複製檔案時確定有效的資料讀取緩衝區大小,應該將 copyStream 的第三個參數設為
以下總結了以 1KB、100KB、1000KB 和 10000KB 為單位執行相同複製過程的結果。



雖然我們不能僅根據上述結果得出明確的結論,但如果資料讀取緩衝區大小以 1000KB 為單位指定,
結果表明,該系統在複製操作期間的堆記憶體使用率和處理時間方面都很高效。
此外,即使檔案大小增加(到大約 1GB),也獲得了類似的結果。

相反,複製小檔案(大約 1MB 或更小)時,增加緩衝區大小是沒有意義的,所以最好指定大約 100KB。

使用檔案通道可獲得更快的速度


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

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