簡體   English   中英

UnauthorizedAccessException StreamWriter

[英]UnauthorizedAccessException StreamWriter

我有以下代碼:

public WriteToFile(string path, List<string> text)
{
    File.Delete(path);
    using (TextWriter writer = new StreamWriter(path, true))
    {
        foreach(string t in text)
        {
            writer.WriteLine(text);
        }
    }
}

在大多數情況下,它可以正常工作,該文件將被刪除,然后使用內部文本再次創建。 但是, using語句經常會拋出UnauthorizedAccessException 知道為什么嗎? 我具有管理員權限,該程序以管理員身份運行。

這是正常現象,因為您使用了File.Delete(),因此無法診斷。 這是不必要的,只需使用StreamWriter(string)構造函數。

這是錯誤的,因為刪除文件並不能保證該文件實際上將被刪除。 可以通過另一個進程打開它。 通過刪除共享打開文件的程序通常使用病毒掃描程序和文件索引器之類的程序。 這使得Delete()調用成功,但是直到關閉文件上的所有句柄后文件才消失。 您收到UnauthorizedAccessException異常,因為文件尚未刪除。

通過刪除File.Delete()調用來取得成功。 您仍然需要假設StreamReader()構造函數可能會失敗。 它很少會遲早發生。 您會收到更好的異常消息。 這就是多任務操作系統的多變之處。

暫無
暫無

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

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