代码之家  ›  专栏  ›  技术社区  ›  Jonathan

split方法,用于在从文件读取时输出彼此下面的值

  •  1
  • Jonathan  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  2
  •   Grant Foster Aarthi Ananth    5 年前

    在添加到之前添加换行符 fileContents .

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

        2
  •  2
  •   NiVeR    6 年前

    通过在执行操作时直接打印列表,可以调用该方法 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);
    
        3
  •  1
  •   Grant Foster Aarthi Ananth    6 年前

    fileContents.add(line + System.lineSeparator);

        4
  •  1
  •   Jonathan    6 年前

    下面是我的完整答案。谢谢你的帮助。我花了一整天的时间,但我有一个完整的解决方案。

            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());
                    }