0

我有两个类字段,一个名为 CSVUtils.java,另一个名为 FilesCollector.java。CSVUtils.java 包含一个名为 matchValues(String csvFile, int columnNumber, String matchValue) 的静态方法,由 FilesCollector.java 调用。基本上是这样的

Public Class CSVUtils {

    private static String FILENAME;
    private static int COLUMN;
    private static String MATCHVALUE;
  public static void matchValues(String csvFile, int columnNumber, String matchValue) {
    try {  
     //read csvFile, match values, and write to outPut file. details omitted.
   } finally {
        csvReader.close();
        csvWriter.close();
        System.out.println("success");
        System.exit(0); 
    }

  }
}

在 FilesCollector.java 中,我使用 Apache Commons-IO 获取 CSV 文件列表并将其存储在数组 File[] csvFiles 中。然后我使用下面的 for 循环来处理单个 csv 文件

for (File e : csvFiles) {
  CSVUtils.matchValues(e.getAbsolutePath(), 9, "Yes");
}

但是,出于某种我不知道的原因,上面的这个 for 循环只能处理 File[] csvFiles 数组中的第一个 csv 文件。你们能帮我看看我的代码哪里有问题吗?非常感谢!

编辑:注释掉这一行 System.exit(0); 我的代码正在运行。为什么这行代码使该方法不起作用?

4

2 回答 2

3

在您的 finally 块中,您调用System.exit(0),因此在处理一个文件后,您将关闭程序。

因此,无论length是什么csvFiles,您都只会处理第一个文件。

finally {
        csvReader.close();
        csvWriter.close();
        System.out.println("success");
        System.exit(0); <--- here
    }

删除这条线,你会没事的。

于 2013-11-04T21:57:54.010 回答
1

您正在关闭程序

System.exit(0); 

所以它不会继续。

于 2013-11-04T21:59:41.130 回答