JAVA разделяет текст из файла и конвертирует в сообщение

я создал класс сообщения (у сообщения есть тело, отправитель, адрес все строки) у меня есть текстовый файл, который выглядит так: От: отправитель Кому: адрес тело сообщения

(поля разделяются новой строкой)

мне нужно создать массив сообщений из этого текстового файла

как лучше всего это сделать? (я пытаюсь сделать это с помощью split, но возникли некоторые проблемы)

Используйте метод BufferedFileReader readLine ()

Jyotsana Nandwani 27.05.2018 18:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
627
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я четко понимаю вашу проблему, у вас есть несколько сообщений в одном файле, а сообщение состоит из 3 строк:

  • Из
  • К
  • Тело

Затем вы можете сделать это так:

public List<Message> getMessages(String fileName) throws IOException {
    List<Message> messages = new ArrayList<>();
    try {
        String from;
        String to;
        String body;
        Message message;
        List<String> lines = Files.readAllLines(Paths.get(fileName));
        for (int i = 0; i < lines.size(); i += 3) {
            from = lines.get(i);
            to = lines.get(i + 1);
            body = lines.get(i + 2);
            message = new Message(from, to, body);
            messages.add(message);
        }
    } catch (IOException e) {
        throw e;
    }
    return messages;
}

Здесь вы просматриваете свой файл сообщений, которому вы передаете имя файла в параметрах, и увеличиваете счетчик строк до 3 на каждой итерации, так что вы можете просто получить все данные, которые вам нужны (из, в и тело).

Если этого образца кода недостаточно, вы можете использовать split () для from, to и body только для извлечения значения:

String fromValue = from.split(": ")[1]

NB: Используемый здесь класс сообщений выглядит следующим образом:

public class Message {

    private String from;

    private String to;

    private String body;

    public Message(String from, String to, String body) {
        this.from = from;
        this.to = to;
        this.body = body;
    }
}

Если функция разделения не работает нормально, вы можете использовать StringTokenizer. Класс строкового токенизатора позволяет приложению разбивать строку на токены. Набор разделителей (символов, разделяющих токены) может быть указан либо во время создания, либо для каждого токена. Ниже вы можете найти пример:

String message = "From: sender\nTo: adress message\nbody";
System.out.println(message);
StringTokenizer st = new StringTokenizer(message, "\n");

while(st.hasMoreTokens()) {
  System.out.print("[" + st.nextToken() + "]");
}

Другие вопросы по теме