метод split для вывода значений друг под другом при чтении из файла - PullRequest
0 голосов
/ 10 октября 2018

Мой код работает нормально, однако он печатает значения бок о бок, а не друг под другом, строка за строкой.Например:

iatadult,DDD,

iatfirst,AAA,BBB,CCC

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

String folderPath1 = "C:\\PayrollSync\\client\\client_orginal.txt";
File file = new File (folderPath1);
ArrayList<String> fileContents = new ArrayList<>(); // holds all matching client names in array

try {
    BufferedReader reader = new BufferedReader(new FileReader(file));// reads entire file
    String line;

    while (( line = reader.readLine()) != null) { 
        if(line.contains("fooa")||line.contains("foob")){
            fileContents.add(line);
        }
        //---------------------------------------
    }
    reader.close();// close reader
} catch (Exception e) {
    System.out.println(e.getMessage());
}

System.out.println(fileContents);

Ответы [ 4 ]

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

Ниже мой полный ответ.Спасибо за вашу помощь stackoverflow.Это заняло у меня весь день, но у меня есть полное решение.

        File file = new File (folderPath1);
        ArrayList<String> fileContents = new ArrayList<>(); // holds all matching client names in array 

         try {
                BufferedReader reader = new BufferedReader(new FileReader(file));// reads entire file
                String line;

                while (( line = reader.readLine()) != null) { 
                     String [] names ={"iatdaily","iatrapala","iatfirst","wpolkrate","iatjohnson","iatvaleant"};
                           if (Stream.of(names).anyMatch(line.trim()::contains)) {
                               System.out.println(line);
                               fileContents.add(line + "\n");
                           }
                }
                 System.out.println("---------------");
                reader.close();// close reader
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
0 голосов
/ 10 октября 2018

Независимый от платформы способ добавления новой строки:

fileContents.add(line + System.lineSeparator);

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

Распечатывая список непосредственно, как вы делаете, вы вызываете метод toString(), переопределенный для списка, который печатает содержимое следующим образом:

obj1.toString(),obj2.toString() .. , objN.toString()

в вашем случае obj* имеет типString и переопределение toString() для него возвращает саму строку.Вот почему вы видите все строки, разделенные запятой.

Чтобы сделать что-то другое, то есть печатать каждый объект в отдельной строке, вы должны реализовать его самостоятельно, и вы можете просто добавить символ новой строки ('\n') после каждой строки.

Возможное решение в Java 8:

String result = fileContents.stream().collect(Collectors.joining('\n'));
System.out.println(result);
0 голосов
/ 10 октября 2018

Добавить перевод строки перед добавлением в fileContents.

fileContents.add(line+"\n");

...