我遇到了一个非常有趣的现象。我有一个文本文件,它的数据以这种方式组织:
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();
}
有人可以帮帮我吗?我不知道为什么。据我所知,我的代码应该可以完美运行。