質問
私は、ファイル内の10行を持っているとしましょう。私は最初とインデックスの終了を指定する2つのパラメータを持っています。
のstartIndex = 2 //指定最初の2行
endIndexの= 3 //指定し、最後の3行
私は、間にラインを読む必要があります。私は、インデックスやスキップを維持する方法の一つである知っている...しかし、(たとえ外部ライブラリを使用)、他の効率的な方法があるのですか?
おかげ
解決
あなたは簡単にそれを行うことができコモンズIOを使用するが、それはメモリ内のファイル全体をロードしますので、それは効率的ではありません。
File file = new File("myfile.txt");
List lines = FileUtils.readLines(file).subList(2,3);
他のヒント
私は最初の2行を読まなくても、ファイルの3行目に直接ジャンプすることがとにかくがある場合、あなたが求めていると思います。 (あなたが述べたように、あなたが、インデックスを持っていない限り)一般的な答えはノーです。あなたは、彼らがどのくらい知っている最初の2行を読まなければならないので、ファイルのライン・バイ・ラインを読み、最初の行を無視しての簡単な解決策は、あなたが得ることができるように良いとしてについてです。
あなたの終了インデックスは、ファイルの先頭からのインデックスがある場合は、は終わりについて、あなたは早期に停止することができます。しかし、あなたは、ファイルの最後から3番目の行を意味するのですか?この場合、あなたはまた、停止する際に知っておくファイルの最後にすべての方法を読んでする必要があります。
あなたはすべての行が同じ長さであることがわかっている場合は、一つの特殊なケースです。そして、あなたは、ファイル内の正しい場所に直接追求し、そこから読み始めることができます。
あなたが何のファイルの内容についての詳細を知っているし、あなたが本当に行が始まる場所を見つけるために順次読み出すために持っていない限り、他の人が、指摘しないので。あなたはある LineNumberReaderするを利用することができます行番号を追跡して、のバッファリングされた文字入力ストリーム。の