首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnauthorizedAccessException StreamWriter

UnauthorizedAccessException StreamWriter
EN

Stack Overflow用户
提问于 2013-09-09 15:16:16
回答 1查看 2.4K关注 0票数 1

我有以下代码:

代码语言:javascript
复制
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。知道为什么吗?我有管理员的权利和程序是运行的管理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-09 17:15:01

这是正常的,因为您使用了File.Delete(),所以无法诊断。这是不必要的,只需使用StreamWriter(string)构造函数即可。

这是错误的,因为删除文件不能保证文件将被实际删除。它可以通过另一个过程打开。它已经打开了文件与删除共享,程序,如病毒扫描器和文件索引器通常这样做。这使得Delete()调用成功,但直到文件上的所有句柄关闭后文件才会消失。您得到了UnauthorizedAccessException异常,因为该文件尚未被删除。

先删除File.Delete()调用。您仍然需要假设StreamReader()构造函数可能失败。通常情况下,这种情况迟早会发生。您将得到更好的异常消息。这就是多任务操作系统的变化无常之处。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18701543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档