私は Java/Android を学習しようとしていますが、現在、replaceAll
関数を使っていくつかの実験を行っています。しかし、大きなテキスト ファイルでは処理が遅くなることがわかったので、ファイルの「役に立たない」部分をスキップしてパフォーマンスを向上させる方法があるかどうか疑問に思っていました。(注: 削除せずにスキップしてください)
注:「行数」、「println」、または「system.out」を試みているわけではありません。文字列を置き換えて、変更を同じファイルに保存しているだけです。
例
ああああ
CCCC- 9234802394819102948102948104981209381'238901'2309'129831'2381'2381'23081'23081'284091824098304982390482304981'20841'948023984129048'1489039842039481'204891'29031'923481290381'20391'294872385710239841'20391'20931'20853029573098341'290831'20893'12894093274019799919208310293810293810293810293810298'120931¿ 2093�12039�120931�203912�0391�203912�039�12093�12093�12093�12093�12093�12093120390�... �DDDD
ああああ
CCCC- 9234802394819102948102948104981209381'238901'2309'129831'2381'2381'23081'23081'284091824098304982390482304981'20841'948023984129048'1489039842039481'204891'29031'923481290381'20391'294872385710239841'20391'20931'20853029573098341'290831'20893'12894093274019799919208310293810293810293810293810298'120931¿ 2093�12039�120931�203912�0391�203912�039�12093�12093�12093�12093�12093�12093120390�... �DDDD
など....無数のように
すべての"AAAA"を"BBBB"に置き換えたいのですが、置き換えている文字列の間にデータの大部分があります。また、この部分は常に"CCCC"で始まり"DDDD"で終わります。
文字列を置き換えるために使用しているコードは次のとおりです。
File file = new File("my_file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "", oldtext = "";
while((line = reader.readLine()) != null) {
oldtext += line + "\r\n";
}
reader.close();
// Replacing "AAAA" strings
String newtext= oldtext.replaceAll("AAAA", "BBBB");
FileWriter writer = new FileWriter("my_file.txt");
writer.write(newtext);
writer.close();
すべての行を読み取るのは、特にこれらの部分を変更しない場合 (ファイルの 90% を占める場合) は非効率的だと思います。
誰かが解決策を知っていますか???