2013-08-21 68 views
2

這是我的類從每個目錄返回最新的文件,問題是,儘管我把我的代碼放在Try - Catch塊中,但我仍然得到了路徑被拒絕的錯誤捕獲對路徑的訪問被拒絕異常

public class NewestFiles 
{ 
    //public event EventHandler newFileEventHandler; 

    // Dictionary: 
    // Key = The directory name. 
    // Value = The most recently modified file for that directory. 
    private Dictionary<string, string> GetNewestFiles(string directory, Dictionary<string, string> dictionary) 
    { 
     if (dictionary == null) 
      dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); 

     try 
     { 
      var files = from file in Directory.GetFiles(directory, "*.*") 
         select new FileInfo(file); 

      var latestFile = files.OrderByDescending(file => { return file.LastWriteTimeUtc; }).FirstOrDefault(); 

      if (latestFile != null) 
       dictionary[latestFile.DirectoryName] = latestFile.FullName; 
     } 
     catch(Exception) 
     { } 

     foreach (var subDirectory in Directory.GetDirectories(directory)) 
     { 
      try 
      { 
       GetNewestFiles(subDirectory, dictionary); 
      } 
      catch { } 
     } 

     return dictionary; 
    } 

    public Dictionary<string, string> GetNewestFiles(string directory) 
    { 
     return GetNewestFiles(directory, null); 
    } 
} 
+1

這是什麼意思?它發生在哪一行? 您是否遇到異常並且調試程序警告您,或者異常是否會使應用程序崩潰? –

+0

此外,我認爲你的代碼可能存在問題:你沒有防範可能導致無限循環的nfts聯接文件夾,另外,如果你使用臨時文件,當你使用字典條目時這可能會消失。 –

+0

發生異常var files = from Directory.GetFiles(directory,「*。*」)中的文件 選擇新的FileInfo(file); – user2214609

回答

0

雖然我把我的代碼在try - catch塊,我仍然得到了這條道路被拒絕

嘗試捕捉不會阻止錯誤,他們只捕獲異常爲你在一個不錯的方式,如果處理錯誤發生了一件壞事

現在你的錯誤

訪問路徑被拒絕例外

由於本身建議您不必存取權限的文件/目錄,您正試圖讀取錯誤。或者如果你自己編寫了這個文件(就像你的代碼看起來那樣),你可能沒有正確關閉編寫器。

0

通常當你得到access to the path is denied exception這意味着其他一些程序正在保存該文件。當你處理文件,流或數據庫時,你應該使用using語句來防止不關閉流。

但是,有辦法強制文件或至少找出哪個進程鎖定它。 here你可以看到如何開始使用它