2010-04-05 94 views
2

我有一個可以修改圖像的應用程序。在某些情況下,這會使文件大小變小,在某些情況下會變大。File.Replace拋出IOException

該程序沒有「如果結果有更大的文件大小不替換文件」選項。

所以我寫了一個小小的C#應用​​程序來嘗試解決這個問題。

而不是覆蓋文件,我讓應用程序將結果寫入當前文件夾下的文件夾並命名爲Test文件夾。

我寫的C#應用​​程序比較抓取兩個文件夾的內容,並將文件的完整路徑放在兩個List對象中。然後我進行比較和替換。

但是替換不起作用。我得到以下IOException異常:

無法刪除該文件是 更換

位置是外部硬盤驅動器,關於這一點我有充分的權利。

現在,我知道我可以按照該順序執行File.Delete和File.Move,但是這個異常讓我對感興趣,爲什麼這個特定的設置無法工作。

這裏的源代碼:http://pastebin.com/4Vq82Umu

是的,指定的文件作爲替換函數的最後一個參數確實存在。

回答

1

驗證要更換你的文件不被加載到內存中,這可能會在文件中根據文件會導致鎖

嘗試使用using語句來自動配置資源,

如果destinationBackupFileName位於不同的驅動器上,則不會像文檔狀態那樣刪除它,而會拋出IOException,並顯示消息「無法刪除要替換的文件」。被拋出

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx

+0

我去了我用的是類,而不是他們的單獨一個自IDisposable繼承。我如何實現在這個使用? – KdgDev 2010-04-05 23:24:52

+0

如果您爲文件打開了FileStream,它將實現IDisposable。 – 2012-03-01 06:29:14

相關問題