Java:for循环只能执行一次

时间:2013-11-04 21:55:42

标签: java loops csv static

我有两个类fiels,一个名为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);我的代码正在运行。为什么这行代码使得该方法不起作用?

2 个答案:

答案 0 :(得分:3)

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

因此无论length的{​​{1}}是什么,您都只会处理第一个文件。

csvFiles

删除此行,你会没事的。

答案 1 :(得分:1)

您正在使用

关闭程序
System.exit(0); 

所以它不会继续。