Я только что сделал очень простой парсер, который получает входные данные из файла и выводит их в файл.
Он выполняет построчный анализ файла, который вы ему передаете, и выполняет одну и ту же функцию для всехстрок файла, а затем перенаправляет всю строку в другой файл.
Я даю функции parseLine
JsonObjectBuilder , чтобы он мог продолжать добавлять json-подобные структуры в выводстрока (это обычный текст для json parser btw).
функция parseFile
private String parseFile(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader (file));
JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
String line;
try{
while((line = reader.readLine()) != null){
parseLine(line, jsonBuilder);
}
} finally {
reader.close();
}
return jsonBuilder.build().toString();
}
Класс парсера
public Parser(String file) throws IOException {
PrintWriter out = new PrintWriter(System.getProperty("user.dir") + "/parser/src/main/resources/logFormatted.log");
System.out.println("Initiated Parser class!");
out.println(parseFile(file));
}
функция parseLine
private JsonObjectBuilder parseLine(String line, JsonObjectBuilder jsonBuilder){
String timestamp = null;
String eventCode = null;
String payload = null;
String finalString = null;
try {
timestamp = line.substring(0, 23);
eventCode = line.substring(24, 28);
payload = line.substring(29, line.length());
jsonBuilder.add(timestamp, Json.createObjectBuilder()
.add("eventCode", eventCode)
.add("payload", payload)
);
} catch (Exception ex) {
System.out.println("ERROR: " + ex);
}
return jsonBuilder;
}
Main
public static void main( String[] args ) throws IOException{
Parser parser = new Parser(System.getProperty("user.dir") + "/parser/src/main/resources/newFormatLog.log");
}
Проблема с этим кодом заключается в том, что при его выполнении он анализируется так, как и предполагалосьно не разбирает весь файл.Прямо сейчас я даю ему файл ~ 4550 строк, но он выводит ~ 4400 строк.
Я действительно не знаю почему, и я начинаю думать, что строка слишком велика для обработки иличто-то.Может быть, мне нужно немедленно вывести строки в файл, а не делать окончательный вывод.Вся помощь очень ценится!