Я столкнулся с очень интересным явлением. У меня есть текстовый файл, который имеет свои данные, организованные таким образом:Фильтрация некоторых строк текста с помощью Scanner и PrintWriter
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();
}
Может кто-нибудь мне помочь? Я не знаю, почему. Насколько я вижу, мой код должен работать отлично.