我遇到了一个非常有趣的现象。我有一个文本文件,其数据以这种方式组织:
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();
}
有人可以帮帮我吗?我不知道为什么。据我所知,我的代码应该可以正常工作。
答案 0 :(得分:0)
我能够使用BufferedReader,InputStreamReader和FileInputStream解析大文本文件。所以现在我的代码运行正常。至于Scanner,我仍然猜测为什么这不起作用。我确信它缺乏大量的文件支持,但是有人能指出为什么BufferedReader特别有用以及为什么Scanner无法工作?