2009-10-08 60 views
1

我正在製作一個程序,用於處理一個大文件並將某些內容輸出到另一個需要稍後使用的文件。我想知道應該只是打印輸出並將其重定向到一個文件,或者我應該只是寫入程序中的文件。由於這將是一個非常大的文件,我想知道哪種方式更快,每一個位都很重要。System.out.print + OS重定向vs寫入文件,速度更快?

回答

1

你的問題是真的,「我應該寫入標準輸出,還是使用本機文件I/O」。

答案在某種程度上取決於您如何處理文件(是否可以逐行處理和輸出)以及寫入文件I/O代碼的最佳方式。

它很可能編寫直接輸出到比寫入標準輸出的代碼慢的文件的代碼。

1

有什麼區別?標準輸出是一個流,也是一個文件。在大多數操作系統上,幾乎沒有區別。在Windows上,處理文件流與輸出流時有不同的功能,但它們仍然幾乎完全相同(只是文件的前綴爲'f')。如果表現存在差異,我會很驚訝。

您當然可以使用替代API來創建文件,但我沒有看到這樣做的充分理由,因爲這些文件仍然是操作系統級別的流。

1

如果典型的輸出是文本格式,我寧願stdout。您可以簡單地檢查終端上是否重定向到文件或將其傳送到下一個命令。表現應該是一樣的。對於二進制輸出,文件輸出更典型。