Неожиданный конец маркера файла в позиции 0 во время синтаксического анализа FileReader - PullRequest
1 голос
/ 01 октября 2019

У меня есть небольшая проблема, которая всегда случается, когда я впервые использую свой код, и я не понимаю, почему. Я использую Watcher-сервис для управления папкой. Как только в эту папку входит новый файл (содержащий данные в формате JSON), я анализирую его для обработки. С первого разбора у меня появляется ошибка Неожиданный токен END OF FILE в позиции 0. Иногда тоже бывает после, но случайно чувствую.

Я уже выгляжу по-другому, не нашел ...

Это пример файла json:

{"identifier":"004","note":null,"addresses":null,"msgType":"Alert","code":null,"references":null,"source":null,"sent":"2018-01-17T22:39:00-07:00","sender":"test","scope":"Public","restriction":null,"incidents":null,"status":"Actual","info":{"severity":"Severe","area":null,"audience":null,"expires":null,"resource":null,"certainty":"Likely","description":null,"language":null,"onset":null,"eventCode":null,"effective":null,"responseType":null,"senderName":"Los Angeles Police Dept - LAPD","urgency":"Immediate","web":null,"instruction":null,"contact":null,"parameter":{"valueName":"Beeldvorming","value":"<b>Time: 2019-09-07T15:44:54-00:00<\/b>  Sender: Fire DepartmentMessage: Hello007"},"category":"Rescue","event":"Child Abduction","headline":"Amber Alert in Los Angeles County"}}

Это мой код Java, который анализирует этот Json:

while ((key = watchService.take()) != null) {
    for (WatchEvent<?> event : key.pollEvents()) {
        System.out.println("Event kind:" + event.kind() + ". File affected: " + event.context() + ".");
        if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
            String fileName = event.context().toString();
            try {
                String absolutePath = lcmsFolderPath + fileName;
                FileReader fileReader = new FileReader(absolutePath);
                // If unexpected token end of file at position 0
                // == parse used twice.
                JSONObject jsonObject = (JSONObject) parser
                        .parse(fileReader);
                JSONObject infoJson = (JSONObject) jsonObject.get("info");
                JSONObject parameterJson = (JSONObject) infoJson.get("parameter");
                String htmlValue = (String) parameterJson.get("value");
                String valueName = (String) parameterJson.get("valueName");
                fileReader.close();

                if (htmlValue != null) {
                    createLCMSDocument(valueName, htmlValue);
                }
            } catch (IOException | ParseException e) {
                e.printStackTrace();
            }
        }
    }
    key.reset();
}

Спасибо,

...