簡體   English   中英

最優雅的方式來讀取文件並在行上作為字節操作

[英]Most elegant way to read a file and operating on lines as bytes

我有一個數據庫轉儲文件,我需要原始操作。 我需要讀取文件,逐行操作,但我不能將整個文件放在內存中(理論上它們可以是10gb +)。

我想能夠讀取它並在我去的時候單獨操作每行,直到文件結束。 它必須是奇怪的字符友好(可以有各種各樣的字節)。

你可以調整舊的nio示例grep並刪除模式匹配,如果你不需要它。

如果換行不感興趣,你可以使用BufferedReader#readLine()並將字符串轉換回byte []

另一種方法是使用byte []作為緩沖區(必須足夠大的一行)並使用InputStream #read(byte [])用字節填充它。 然后你可以在緩沖區中搜索換行符並使用部分緩沖區。 一旦找不到換行符,通過System#arraycopy()將數據移到左側,並通過InputStream#read(byte [],int,int)用新數據填充其余數據,然后繼續。

不過要小心! 取決於編碼(例如,unicode),一個字節不必是一個字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM