2013-05-22 61 views
2

我有一個.exe文件,當我運行它時,一個目錄中的一些文件被鎖定。我也有可能在這個.exe中重命名該文件夾,並且當我想重命名它時,我當然會得到某些文件被鎖定的錯誤。其實我有兩個問題: 1)什麼功能導致文件鎖定?我的意思是可以,例如,FileAccess枚舉影響到這? 2)我該如何解決這個問題?在vb.net中解鎖文件夾

+0

應用程序對文件做什麼? – David

+0

鎖定的文件不會阻止它被重命名。這裏更可能的問題是*目錄*被鎖定。不經常發生,但是如果它是程序的默認目錄,那麼肯定可能發生。像你的。密切關注Environment.CurrentDirectory。 –

回答

3

每當你打開一個流(或一個寫入器/閱讀器,它包裝一個流)時,就會鎖定文件。

您需要使用using聲明關閉流。

+0

那麼這意味着即使我關閉了寫入器/閱讀器,文件仍然處於鎖定狀態? – Viaches

+0

@Viaches:No;關閉讀取器或寫入器也將關閉基礎流。 (除非你通過一個特殊的ctor參數,告訴它不要) – SLaks

1

1)什麼功能導致文件鎖定?

這是因爲造成一些程序(可能你的程序)有一個文件打開和鎖定,防止其他進程操縱它。

2)我該如何解決這個問題?

確保當您嘗試執行重命名時,包括您自己的過程在內保持打開文件。這通常意味着確保您始終關閉文件流,當您創建或打開文件時,可以通過Using statement自動處理文件流。

+0

對不起,我想說清楚...文件可以關閉並鎖定?因爲我對我的代碼進行了一些評論,並且我還沒有發現任何代碼,我忘記關閉文件流 – Viaches

+0

@Viaches否 - 但該文件可以被其他程序鎖定。 –

+0

我使用Unlocker來查看哪些程序正在鎖定文件,並且它只是我的應用程序。我想我需要再次查看我的代碼 – Viaches