我有两个类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);我的代码正在运行。为什么这行代码使得该方法不起作用?
答案 0 :(得分:3)
在finally块中,您调用System.exit(0)
,因此在处理完一个文件后,您将关闭程序。
因此无论length
的{{1}}是什么,您都只会处理第一个文件。
csvFiles
删除此行,你会没事的。
答案 1 :(得分:1)
您正在使用
关闭程序System.exit(0);
所以它不会继续。