ファイルへのランダム アクセスが必要な場合、ファイルから 1 行ずつ読み取り、解析する最速の方法は何ですか。ある位置から別の位置までシークし、これらの位置の間の行を解析したい。
1 に答える
0
NIO パッケージで提供されるファイルを使用Channels
して、ファイルを行ごとまたはランダムに読み取ることができます。
ただし、ここに注意事項があります。
BufferedReader
ファイルを行ごとに読み取ることができますが、ブロックとしてではなくレコードとしてアクセスします。したがって、ランダムアクセスはありません。
FileChannel
とその子の行SeekableByteChannel
をWritableByteChannel
読み取り、ランダムな読み取りと書き込みを許可しますが、行ごとに読み取ることはできません。1行に何バイトあるか分かっていれば可能です。チャネルでは、同じデータをバイトまたは文字として読み取ることができます。それを妨げるものは何もありません。
だから、決断を下してください:)
チュートリアルは次のとおりです。http://docs.oracle.com/javase/tutorial/essential/io/fileio.html
Jacob Jenkov は、NIO と IO パッケージをよく比較しています: http://tutorials.jenkov.com/java-nio/nio-vs-io.html
于 2013-10-11T10:51:43.540 に答える