我正在使用java程序处理大量文件,比如1000个文件。处理每个文件需要花费大量时间。问题是:当我处理文件时,由于某些未知问题(可能是防病毒或任何其他问题)输入文件无法被java程序访问,因此我得到“访问被拒绝”并最终“java.io .FileNotFoundException”。
一种可能的解决方案是每当我得到异常时我再次处理文件调用该函数,但是调用具有文件名的函数是困难的,因为这个函数是递归函数,它递归地处理目录和文件。请建议我替代方法。
答案 0 :(得分:1)
将catch()移动到递归方法的主体内。
void readFilesRecursively(File dirOrFile){
boolean successfullRead=false;
for(; !successfullRead ;){
try{
..........Read....
successfullRead=true;
}catch(java.io.FileNotFoundException ex){}
}
}
答案 1 :(得分:1)
保留处理失败的文件列表,并在收到异常时在列表中添加文件。
一旦递归调用结束,检查列表是否有任何数据,如果是,则处理它们。