2017-02-11 62 views
0

想知道是否有人會知道如何遍歷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()); 
    } 
} 
} 
} 

有什麼建議嗎? 如果有這樣的事情,我在完整的編碼器塊。

回答

0

您可以使用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一年半的時間非常生疏。 –