[英]Fastest way of writing the first 10 000 lines of data file to new file
我想要一個hyuuge(.csv)文件的前一萬行。
天真的方法
1)創建讀者和作家
2)讀取原始文件行
3)將前一萬行寫入新文件
不能最快,可以嗎?
這將是我應用程序中的常見操作,因此我對速度略有擔心,但也很好奇。
謝謝。
有幾種在Java中進行快速 I / O的方法,但是如果沒有針對您的特定情況進行基准測試,則很難找到一個數字/建議。 您可以通過以下幾種方法進行基准測試:
如果您只想讀/寫10,000行左右:
話雖這么說,您比使用BufferedReader.readLine()
或每次讀取一行更好。
根據文件的字符編碼,通過使用具有大緩沖區大小的BufferedInputStream和BufferedOutputStream進行按字節I / O,可以獲得更好的性能。 只需編寫一個循環以讀取一個字節,有條件地更新行計數器並寫入該字節...直到復制了必要的行數。 (這假定您可以通過檢查字節來檢測CR和/或LF字符。對於我所知道的所有字符編碼都是如此。)
如果您使用NIO和ByteBuffers,則可以進一步減少內存中的復制數量,盡管CR / LF計數邏輯會更復雜。
但是您應該問的第一個問題是,是否值得為此進行優化。
線長相同嗎? 如果是這樣,則可以使用RandomAccessFile讀取x字節,然后將這些字節寫入新文件。 但是,這可能會占用大量內存。 我懷疑這樣做會更快,但可能值得進行基准測試。 此解決方案僅適用於定長線
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.