2012-08-22 97 views
0

當我嘗試使用下面的代碼重命名目錄:目錄重命名異常在C#

try 
    { 
     System.IO.Directory.Move(oldPath, newPath); 
    } 
    catch (System.IO.IOException e2) 
    { 
     Console.WriteLine(e2.Message); 
    } 

我得到以下異常:因爲它正在被其他進程使用進程無法訪問文件。

  1. 我不明白爲什麼它說「文件」在第一位。
  2. 此外,該目錄是空的。它指的是什麼文件?
  3. 最後,如何管理重命名目錄沒有任何異常?

更新:我想我找到了異常的原因,那是因爲我試圖重新命名位於谷歌雲端硬盤文件/文件夾的文件/文件夾的名稱。 Google雲端硬盤應用程序是使用它的另一個過程!任何解決方案來重命名Google雲端硬盤中的文件夾?但奇怪的是,當我嘗試通過C#重命名位於Google Drive中的文件時,我沒有得到這個異常。

謝謝!

+6

這可能是顯而易見的,但你碰巧有Explorer中打開或內那個目錄? – Jensen

+3

就文件系統而言,目錄是一種特殊類型的文件。 –

+0

是的,探險家是開放的。但是,當我在其他一些目錄上使用c#進行類似的操作時,即使瀏覽器窗口已打開,它也能正常工作! 即使我關閉了資源管理器,它也給我提供了相同的例外。 – Shambavi

回答

1

您的文件夾似乎正在被另一個進程使用。嘗試關閉使用該文件夾的資源管理器或其他程序。如果沒有任何幫助 - 嘗試重新啓動您的機器。如果這些不會幫助 - 考慮使用Unlocker來釋放文件夾以防止其他進程的使用。請注意,這將是奇怪的,如果非系統文件夾機器

0
  1. 重新開始之後佔據它說:「文件」,因爲底層的命令可能使用 通用移動命令爲兩個目錄和文件的 本地化的錯誤字符串包含word文件。
  2. 即使一個目錄是空的,如果你在應用程序中「打開」它,它可以被鎖定以進行任何編輯(你是否在目錄中打開了資源管理器Windows,命令提示符是當前目錄設置爲你想要的移動/刪除)?
  3. 不幸的是,除非您想以編程方式開始查殺違規流程,否則您無能爲力。

您可以使用Process Explorer查找對該文件夾有鎖的進程。有關更多信息,請參閱http://windowsxp.mvps.org/processlock.htm