2015-10-20 125 views
2

我有這樣一段代碼,它加載一個文件到RAM中,然後加載它作爲一個組件裝入一個AppDomain(d):File.ReadAllBytes保持文件句柄打開

var a = d.Load(File.ReadAllBytes(tmp)); 

的問題是,當我稍後嘗試刪除位於tmp的文件(現在只是使用文件資源管理器),我收到一個錯誤消息說該文件在我的程序中仍然打開。我什至嘗試使用using關鍵字與File.Open,這似乎也沒有工作。有人可以解釋爲什麼會發生這種情況,以及如何解決它?

+2

'File.ReadAllBytes'不保持開放的流文件。也許這是你的代碼中的其他地方? – Magnus

+2

在另一個位置打開文件。這個語句是正確的,它使用了一個當它返回字節數組時已經處理過的FilesStream。你如何創建臨時文件? –

+0

@Alois我使用了'Path.GetTempFilePath()' –

回答

0

ReadAllBytes應該關閉該文件作爲其功能的一部分。這聽起來像是阻止它關閉,因此你不能刪除。也許有一個需要被捕獲的異常發生。

下面是這可能是有幫助的解決方案類似的問題: Unable to delete some files via System.IO.File in C# console app

+1

整個函數被封裝在一個通用的try/catch中,並且沒有例外 –

相關問題