如何根据特定标准从文本文件中删除一行

问题描述:

想知道是否有人会知道如何遍历csv文件并基于一组规则删除各种行。或者,也可以将满足规则的行添加到新的output.csv文件中。如何根据特定标准从文本文件中删除一行

到目前为止,我已经设法读取csv文件并将每行添加到一个ArrayList。但是现在我需要对这些行应用一组规则(最好使用if语句)并删除不符合条件的行。

package codeTest; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.stream.Stream; 

public class Main { 

public static void main(String[] args) throws IOException { 

    String filename = "sample.csv"; 


    try(Stream<String> stream = Files.lines(Paths.get(filename))){ 

     stream.forEach(System.out::println); 


    try { 

     File inputFile = new File("sample.csv"); 
     File outputFile = new File("Output.txt"); 

     BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 
     BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile)); 


     String strLine; 
     java.util.ArrayList<String> list = new java.util.ArrayList<String>(); 

     while((strLine = reader.readLine()) != null){ 
      list.add(strLine); 
     } 

     System.out.println("\nTEST OUTPUT..........................\n"); 


     Stream<String> lineToRemove = list.stream().filter(x -> x.contains("yes")); 



    } catch(Exception e){ 
     System.err.println("Error: " + e.getMessage()); 
    } 
} 
} 
} 

有什么建议吗? 如果有这样的事情,我在完整的编码器块。

您可以使用Files.write方法:

List<String> filtered = Files.lines(Paths.get(filename)). 
      filter(x -> x.contains("yes")).collect(Collectors.toList()); 
Files.write(Paths.get("Output.txt"),filtered); 
+0

我将我的项目约束之内给它之前,让你知道 –

+0

安东Balaniuc:我的IDE说:“名单不能被解析为一个类型” –

+0

我的天堂”因此使用Java一年半的时间非常生疏。 –