我在C#MVC應用程序中創建臨時目錄和臨時文件,然後使用FileStream打開文件,將FileStream返回給調用函數,然後需要刪除臨時文件。但是,我不知道如何刪除臨時目錄和文件,因爲它總是錯誤地指出「該進程無法訪問該文件,因爲它正在被另一個進程使用」。這是我的嘗試,但FileStream仍然使用finally塊中的臨時文件。我如何返回FileStream並刪除臨時文件?返回FileStream後無法刪除臨時文件
public FileStream DownloadProjectsZipFileStream()
{
Directory.CreateDirectory(_tempDirectory);
// temporary file is created here
_zipFile.Save(_tempDirectory + _tempFileName);
try
{
FileStream stream = new FileStream(_tempDirectory + _tempFileName, FileMode.Open);
return stream;
}
finally
{
File.Delete(_tempDirectory + _tempFileName);
Directory.Delete(_tempDirectory);
}
}
因此FileStream返回到看起來像這樣的功能:
public ActionResult DownloadProjects()
{
ProjectDownloader projectDownloader = new ProjectDownloader();
FileStream stream = projectDownloader.DownloadProjectsZipFileStream();
return File(stream, "application/zip", "Projects.zip");
}
更新:我忘了提zip文件是380 MB。使用MemoryStream時,系統出現內存異常。
的'FileStream'打開了該文件,爲什麼你甚至希望能夠刪除的文件?這將使返回的FileStream不可用。 – 2013-04-10 18:52:51
什麼是_zipFile的類型? – 2013-04-10 18:54:57
你真的不需要該文件,而是保存到內存流中。 – 2013-04-10 18:57:31