2013-01-21 21 views
0

我正在處理大量文件,比如說使用java程序的1000個文件。處理每個文件需要大量的時間。問題是:當我處理文件時,由於某些未知問題(可能是防病毒或任何其他問題),輸入文件無法被java程序訪問,所以我得到「Access is denied」,最終「java.io .FileNotFoundException」。java程序文件在臨時IO上重新處理異常

其中一個可能的解決方案是每當我得到異常時,我再次處理文件調用該函數,但用文件名稱調用函數很困難,因爲此函數是遞歸函數,它遞歸處理目錄和文件。請向我推薦替代方法。

回答

1

將catch()移到遞歸方法的主體內部。

void readFilesRecursively(File dirOrFile){ 

    boolean successfullRead=false; 
    for(; !successfullRead ;){ 
     try{ 
      ..........Read.... 
      successfullRead=true; 
     }catch(java.io.FileNotFoundException ex){} 
    } 

} 
1

保留處理失敗的文件列表,並在遇到異常時在列表中添加文件。

一旦遞歸調用結束,檢查列表是否有任何數據,如果是,則處理它們。