JAVAでより大きなサイズのファイルを読み込む際に問題があります。私は読むために使用されるファイルは、私がBufferedReaderの、スキャナとLineNumberReaderすべての読み取りに失敗し、のOutOfMemoryErrorにつながるを使用してファイルを読み込むために使用されるので、750メガバイトのサイズを有しています。テキストファイルの指定された行数を読み取る方法は?
はるかに大きいサイズのファイルを簡単に読み取る方法はありますか?いくつかの行をスキップして行をスキップして特定の行を読み取る方法はありますか?
私は、ファイルの読み取りに使用コード:私は2000に1001からの行数を読み取るように思うなら、私はそれらを読むことができるか、
:たとえば
FileInputStream inputStream = null;
Scanner sc = null;
try
{
inputStream = new FileInputStream(path);
sc = new Scanner(inputStream, "UTF-8");
while (sc.hasNextLine())
{
String line = sc.nextLine();
}
if (sc.ioException() != null)
{
throw sc.ioException();
}
}
finally
{
inputStream.close();
sc.close();
}
をそのより大きなサイズのファイルからの特定の行。
ありがとうございます。
['RandomAccessFile'](https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html) –
を読みながら、変数' int line'を更新し続けます。あなたが(0ベースのものか1ベースのものが好きかに応じて)その行を読み込んだ後に(または前に)増加します。変数が1001から2000の範囲にある間、あなたはその行で何かをします。そうでなければそれを捨てる。 –
ファイルをどのように処理しますか? 1行ずつ?固定または可変サイズのブロックでは? 1回のパスでファイルを読み込み、レコードを読み込み、それらのすべてをメモリに保存しないで処理することができます。 –