とても興味深い現象に遭遇しました。次のようにデータが整理されたテキスト ファイルがあります。
2013-03-26T09:42:29 -1000 {"address": 6, "uptime_ms": 1354663, "bmp085_temp_decic": 307, "bmp085_press_pa": 101084, "batt_mv": 3284, "panel_mv": 4887, "apogee_mv": 247, "apogee_w_m2": 1235}
このテキスト内には約 10^6 行あります。そのうちのいくつかは、ごみの行です。意味のある行を除外して別のテキストに書き込むコードを作成し、ゴミのないデータファイルを作成できるようにしました。「{」がある行が「有用」かどうかを区別します。そうでない場合は、その行をスキップします。
しかし、奇妙なことが起こります。私のファイルは約 45,000 行で入力テキスト ファイルの読み取りを停止し、新しく書き込んだファイルは決して終了しません。ある種のエラーが返されるはずだと思いますが、返されず、コードが正常に実行されたと表示されます。私のコードは次のようになります。
public void cleanFile() throws FileNotFoundException, UnsupportedEncodingException {
File file = new File("/home/foo/a/screenlog.txt");
Scanner scanner = new Scanner(file);
PrintWriter pw = new PrintWriter("/home/foo/a/scrlog.0");
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
if(line.contains("{")) {
pw.println(line);
}
}
scanner.close();
pw.close();
}
誰か助けてくれませんか?理由はわかりません。私が見る限り、私のコードは完璧に動作するはずです。