разбиение текста в текстовом файле по новой строке - PullRequest
0 голосов
/ 29 октября 2018
import java.io.*;
public class Wordcount {

    public static void main(String[] args) throws Exception {
        BufferedReader in = null;
        String[] splited = null;
        try {
            in = new BufferedReader(new FileReader("sample.txt"));
            String read = null;
            while ((read = in.readLine()) != null) {
                splited = read.split("systemSerialNumber:");
                for (String part : splited) {
                    System.out.println(part);
                }
            }
        } catch (IOException e) {
            System.out.println("There was a problem: " + e);
            e.printStackTrace();
        } finally {

            in.close();

        }

        System.out.println(splited[3]);
    }
}

Файл "sample.txt" содержит текст ниже.

"2018-10-16 19:54:26.691 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1  - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2
"2018-10-16 19:54:27.074 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1  - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2
"2018-10-16 19:54:27.293 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1  - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2
"2018-10-16 19:54:27.296 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1  - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2

Я получаю сообщение об ошибке, что индекс массива выходит за пределы исключительной ситуации. и почему я получаю это исключение, я не знаю, даже после разделения все данные текстового файла хранятся в одном индексе массива. Остальные пусты.

Трассировка стека:

Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 3 at Task1.Wordcount.main (Wordcount.java:29)

1 Ответ

0 голосов
/ 29 октября 2018

Убедитесь, что результат имеет длину 2. Последняя строка может быть пустой.

Path path = Paths.get("sample.txt");
Files.lines(path, Charset.defaultCharset())
    .forEach(line -> {
        String[] splitted = read.split("systemSerialNumber:");
        if (splitted.length == 2) {
            ...
        }
    });

Как несвязанная информация:

        String[] splitted = read.split("systemSerialNumber:", 2);

будет ограничивать результат максимум двумя элементами, если "systemSerialNumber:" встречается более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...