簡體   English   中英

寫入Asp.Net中的文件

[英]Writing to a file in Asp.Net

我正在嘗試以Asp.Net格式(.aspx)寫入文件。 我可以使用以下方法創建文件:

  if (!File.Exists(Settings.Default.FileLocation))
     {
       File.Create(Settings.Default.FileLocation);
     }

但是當我使用以下代碼寫入文件時:

File.WriteAllBytes(Settings.Default.FileLocation, someByteArray);

我有一個例外:

System.IO.IOException: The process cannot access the file 'C:\inetpub\wwwroot\mysite.com\captured\captured.xml' because it is being used by another process.

(在這種情況下,'C:\\ inetpub \\ wwwroot \\ mysite.com \\ captured \\ captured.xml'== Settings.Default.FileLocation)

在此期間,我也無法在Windows資源管理器中刪除或復制文件。 但是,如果停止或重新啟動運行WebForm的應用程序池,該錯誤就會消失。 這是什么原因造成的,我該如何預防?

這在Win Server 2012 R2和IIS 7.5上運行

閱讀有關MSDN文檔 您應該使用using語句打開文件,以便可以確保關閉該文件的所有打開句柄。

using(FileStream fs=File.Create(Settings.Default.FileLocation))
{
    //manipulate file here
}

另外, 如果文件不存在File.WriteAllBytes 將創建該文件 ,因此無需單獨創建它。

File.Create默認情況下會打開文件以進行讀取/寫入,並且需要先關閉文件才能再次使用。 從文檔:

默認情況下,授予所有用戶對新文件的完全讀/寫訪問權限。 該文件具有讀/寫訪問權限,必須先關閉,然后才能被另一個應用程序打開。

如果文件不存在, File.WriteAllBytes將創建該文件,因此我認為您的代碼來檢查文件是否存在並創建該文件可能是過分的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM