从文件读取时使用split方法在彼此下输出值

时间:2018-10-10 18:27:15

标签: java arrays string split line

我的代码工作正常,但是它并排打印值,而不是逐行打印。像这样:

iatadult,DDD,

iatfirst,AAA,BBB,CCC

我已经对stackoverflow进行了认真的搜索,但我的解决方案似乎都不起作用。我知道我必须在循环进行时进行更改。但是,我所看到的例子都没有奏效。任何进一步的理解或达到我的目标的技术都将有所帮助。我所缺少的可能很小。请帮忙。

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 :(得分:2)

添加换行符,然后再添加到fileContents

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

答案 1 :(得分:2)

通过在执行操作时直接打印列表,可以调用为列表覆盖的方法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);

答案 2 :(得分:1)

一种独立于平台的方式来添加新行:

fileContents.add(line + System.lineSeparator);

答案 3 :(得分:1)

以下是我的完整答案。感谢您的帮助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());
                }