私は任意の数の行を読みたいと思います。ファイルは普通のアスキーテキストファイルです(後でUTF8 /マルチバイト文字ファイルになるかもしれません)巨大なファイルから任意の連続したn行を読み込む方法
だから私が望むのは、特定の行(例えば101〜200)のファイルを読み込む方法です。 (つまり、同じファイルが201-210の別のスレッドによって読み取られ、最初の読み取り操作を待つべきではありません)
読み取る行がない場合は、正常に終了する必要がありますメソッドの出力はリストになる可能性があります。
私が考えていた解決策は、最初にファイル全体を読み込んで、新しい行のそれぞれのバイト位置キャラクター。次に、RandomAccessFileを使用してバイトを読み取り、行に変換します。バイトをStringに変換する必要があります(ただし、読み込みが完了した後に行うことができます)。私は適切な本を保つことによってファイルを越えて読むためのファイル例外の終わりを避けるでしょう。解決策は、ファイルを2回通過するとビット効率が悪くなりますが、ファイルサイズが非常に大きくなる可能性があり、メモリをほとんど保持したくありません。
このようなライブラリがあれば、よりシンプルなネイティブJavaソリューションが素晴らしいでしょう。
いつものように私はあなたの明確化の質問に感謝し、私はこの質問を編集します。
行数を取得するのは簡単ですが、すべての行を繰り返し処理することなく、最初のn行をスキャナでスキップする方法はわかりません。 – geoaxis
私はあなたができるとは言いませんでしたが、私はスキャナがラインインデックスを本当に速く動かすことを望んでいると思いますので、whileループを探してループします:while(myScanner.hasNextLine()&& currentLine ++