2015-12-08 99 views
-1

我有一个问题,即过滤csv文件。在我的GUI用户中,根据我想要消除csv文件的测试用例名称选择他的测试用例名称。例如,我从JTable case1和case2中选择,并将它们存储在一个字符串列表[case1,case2]中,以及如何获取测试名称为case1和case2的唯一行。csv文件返回特定行(java/swing)

我试着读取csv文件并创建jtable和动作侦听器,以将选择的测试用例存储为列表中的字符串,并且它们工作正常。然而;过滤部分我真的不知道?

谢谢你的帮助。

+0

你试过究竟是什么?你的问题是什么 – redFIVE

+0

@redFIVE我不知道如何过滤csv文件。 – limonik

+0

我不想具体代码,我是Java的初学者...我只是想要一些tipps。减去完整值。 – limonik

回答

1

如果我理解正确的话,你想从什么地方得到的测试案例名称,并将其存储在一个列表如下:

List<String> cases = Arrays.asList("case1", "case9"); 

然后你想读取包含许多情况下,文件包括case1case9,你只想选择那些行。如果正确的话,那么假设你有以下文件:

case1, a, b, c, ... 
case2, x, y, z, ... 
case9, aa, b, cc, .. 
case22, 1,2,3, ... 

我会使用Java 8的Stream按行读入文件中的行,只有拿起包含cases元素作为上述声明文件的那些行。 Stream将逐行读取文件,拾取一行,将其发送到另一个方法以检查该行是否包含cases列表中的任何测试用例,如果是,则返回true,并且Stream将保存该行列表中的readCases。如果该行不包含任何测试用例,则会被Stream跳过。见下面的示例代码。

import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.Arrays; 
import java.util.List; 
import java.util.stream.Collectors; 
import java.util.stream.Stream; 

public class ReadFileStream { 
    public static void main(String[] args) throws IOException { 
     //cases that you picked from table 
     List<String> cases = Arrays.asList("case1", "case9"); 

     //open stream to file, please change directory and filename 
     Stream<String> lines = Files.lines(Paths.get("C:\\test_java", "filterfile.txt")); 

     //loop through stream line by line, pick up those that match 
     List<String> readCases = lines.filter(line -> containsAll(line, cases)).collect(Collectors.toList()); 

     lines.close(); 
     System.out.println(readCases); 
    } 

    //this is a simple method that performs String's contains() for each 
    //case in the list. 
    public static boolean containsAll(String line, List<String> cases) { 
     for (String s : cases) { 
      if (line.contains(s)) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

输出为上述输入:

[case1, a, b, c, ..., case9, aa, b, cc, ..]