Как читать две строки одновременно из входного файла и добавлять их в объект? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь читать строки из текстового файла по две строки за раз, а затем добавляю эти строки в объект с именем Запись следующим образом: например, если содержимое текстового файла выглядит следующим образом:

course
computer Science
plant
flower.gif
waterfall
A lot of water falling.
waterfall
waterfall.jpg

Затем программа должна прочитать первые две строки файла (строки 1 и 2) и создать Record Id1 = new Record("course", "text", "computer science"), а затем прочитать следующие две строки (строки 3 и 4), создать Record Id2 = new Record("plant", "image", "flower.gif") и т. Д. И т. Д. .

Однако мой код работает не так, как я хочу, в основном он путает строки inputLine1 и inputLine2. Например: код должен создать Record Id1 = new Record("course", "text", "computer science"), но не создает, а создает Record Id1 = new Record("computer science", "text", ""). поэтому он читает в первой строке, а затем заменяет ее второй строкой. И то же самое с Record Id2 = new Record("plant", "image", "flower.gif"), оно создает Record Id2 = new Record("flower.gif", "image", "").

Вот мой код:

    File file = new File(args[0]);
    BufferedReader inputFile = null;
    try {
        inputFile = new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e2) {
        e2.printStackTrace();
    }

    String inputLine1, inputLine2;
    OrderedDictionary newTree = new OrderedDictionary();
    try {
        while ((inputLine1 = inputFile.readLine()) != null && (inputLine2 = inputFile.readLine()) != null){
            Record newRecord;
            if(inputLine2.endsWith(".jpg") || inputLine2.endsWith(".gif")){
                newRecord = new Record(new Pair(inputLine1, "image"), inputLine2);
            } else if(inputLine2.endsWith(".wav") || inputLine2.endsWith(".mid")){
                newRecord = new Record(new Pair(inputLine1, "audio"), inputLine2);
            } else {
                newRecord = new Record(new Pair(inputLine1, "text"), inputLine2);
            }

            if(newTree.get(newRecord.getKey()) == null){
                newTree.put(newRecord);
            }
        }
    } catch (IOException e1) {
        e1.printStackTrace();
    }

1 Ответ

0 голосов
/ 01 декабря 2018

Код проверки, который вы написали для jpg, gif и т. Д., Выглядит хорошо, но когда речь идет о чтении двух строк и их объединении, вы должны использовать одну строку чтения ввода и читать дважды за один раз. Тогда согласись. Это должно работать ..

...