Как заставить этот сканер останавливаться прямо перед пустой строкой?

Я пытаюсь заставить сканер файлов прекратить сканирование, когда следующая строка пуста.

public static void createAudioTypes(File list, Scanner mediaReader, String mediaType) {
    if (mediaType.equalsIgnoreCase("CD") || mediaType.equalsIgnoreCase("CASSETTE")) {
        String title = mediaReader.next();
        String artist = mediaReader.next();
        int year = 0;
        if (mediaReader.hasNextInt()) {
            year = mediaReader.nextInt();
        }
        String lbl = mediaReader.next();
        ArrayList<String> songs = new ArrayList<String>();
        System.out.println(title);
        System.out.println(artist);
        System.out.println(year);
        System.out.println(lbl);
        mediaReader.useDelimiter(",");
        while(mediaReader.nextLine().equalsIgnoreCase(mediaType)) {
            songs.add(mediaReader.next());
        }
        System.out.println(songs);
    }

}

Часть текстового файла, который я читаю:

CD
Immersion
Pendulum
2011
Atlantic
Genesis, Salt in the Wounds, Watercolour, Set Me on Fire, Crush, Under the Waves, Immunize (feat. Liam Howlett), The Island - pt. 1 - Dawn, The Island - pt. 2 - Dusk, Comprachicos, The Vulture, Witchcraft, Self vs Self (feat. In Flames), The Fountain (feat Steven Wilson), Encoder
16.99

CD
Demon Days
Gorillaz

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

Благодарю вас!


person Monica    schedule 19.01.2013    source источник


Ответы (1)


прочитать всю строку с помощью readLine(), trim() чтобы убедиться, что его isEmpty()

person jmj    schedule 19.01.2013