ローカル マシンからテキスト ファイルを解析する必要があるという問題があります。いくつかの複雑な問題があります。
- ファイルは非常に大きくなる可能性があります (700 MB 以上)
- パターンは複数の行で発生します
- パターンの後に店舗の行情報が必要です
BufferReader
、String.indexOf
およびString.substring
(項目3を取得するため)を使用して簡単なコードを作成しました。
code=
ファイル内には、異なるブロックで何度も発生するという名前のキー (パターン) があります。プログラムは、 を使用してこのファイルから各行を読み取りますBufferReader.readLine
。パターンが表示されるかどうかを確認するために使用indexOf
し、パターンの後にテキストを抽出して共通の文字列に保存します。
600MB のファイルでプログラムを実行すると、ファイルの処理中にパフォーマンスが最悪になることに気付きました。CodeRanch で、Scanner
クラスが大きなファイルに対してパフォーマンスを発揮しないという記事を読みました。
パフォーマンスを向上させるテクニックやライブラリはありますか?
前もって感謝します。
ここに私のソースコードがあります:
String codeC = "code=[";
String source = "";
try {
FileInputStream f1 = new FileInputStream("c:\\Temp\\fo1.txt");
DataInputStream in = new DataInputStream(f1);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
boolean bPrnt = false;
int ln = 0;
// Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
if (strLine.indexOf(codeC) != -1) {
ln++;
System.out.println(strLine + " ---- register : " + ln);
strLine = strLine.substring(codeC.length(), strLine.length());
source = source + "\n" + strLine;
}
}
System.out.println("");
System.out.println("Lines :" + ln);
f1.close();
} catch ( ... ) {
...
}