私はrawlyで操作する必要があるデータベースダンプファイルがあります。ファイルを読み込み、行単位で操作する必要がありますが、ファイル全体をメモリに入れることはできません(理論的には10GB +にすることができます)。ファイルを読み取り、行としてバイトとして処理する最もエレガントな方法
ファイルの最後まで、読んで、それぞれの行を個別に操作したいと思っています。それは奇妙なキャラクターフレンドリーでなければなりません(すべての種類のバイトを持つことができます)。
私はrawlyで操作する必要があるデータベースダンプファイルがあります。ファイルを読み込み、行単位で操作する必要がありますが、ファイル全体をメモリに入れることはできません(理論的には10GB +にすることができます)。ファイルを読み取り、行としてバイトとして処理する最もエレガントな方法
ファイルの最後まで、読んで、それぞれの行を個別に操作したいと思っています。それは奇妙なキャラクターフレンドリーでなければなりません(すべての種類のバイトを持つことができます)。
古いnioの例であるgrepを適用して、不要な場合はパターンマッチを削除することができます。
改行はあなたがBufferedReaderの#のreadLineを(使用することができます興味)とバック[]
バイトに文字列を変換しない場合は、他の方法は、バッファとして[]バイトを使用することですが(である必要があります行に十分な大きさ)、InputStream#read(byte [])を使用してバイトで埋めてください。ラインフィードのバッファを検索し、バッファの一部で作業することができます。もう一度改行が見つからない場合は、System#arraycopy()を使用してデータを左側に移動し、残りの部分を新しいデータでInputStream#read(byte []、int、int)で満たしてください。
でも注意してください。エンコード(ユニコードなど)によっては、1バイトが1文字である必要はありません。
FileInputStreamを使用します。これは、バイトを提供しますが、一度に多くのバイトを必要とします。あなたは自分で改行を認識する必要がありますが、私は彼らがどのように見えるかを知っていると仮定します。 – bdares
データベースダンプのエンコーディング**を知っていますか?それともバイナリ(非テキスト)データを含んでいますか? –