【问题标题】:Access to Path Denied Error访问路径被拒绝错误
【发布时间】:2016-08-03 15:40:07
【问题描述】:

我有一个程序需要删除一个完整的目录,但我收到了Access to path denied 错误。我向所有人授予完全访问权限,但没有帮助。

private void timer1_Tick(object sender, EventArgs e)
{
    label1.Text = DateTime.Now.ToString("HH:mm");
    string lowDir = "";
    if (label1.Text == comboBox1.Text)
    {
        try
        {
            if (System.IO.Directory.GetDirectories(txpath1.Text).Length != 0)
            {
                try
                {
                    var folders = Directory.GetDirectories(@"" + txpath1.Text);
                    DateTime lastLow = DateTime.Now;

                    foreach (string subdir in Directory.GetDirectories(@"" + txpath1.Text))
                    {
                        DirectoryInfo fi1 = new DirectoryInfo(subdir);
                        fi1.Refresh();
                        DateTime created = fi1.LastWriteTime;
                        if (created < lastLow)
                        {
                            lowDir = subdir;
                            lastLow = created;
                        }
                    }
                    var dir = new DirectoryInfo(@"" + lowDir);
                    Directory.Delete(@"" + lowDir, true);
                }
                catch (Exception ex)
                {
                    this.btStop.PerformClick();
                    MessageBox.Show(ex.Message+"\nEzért a program leállt.");
                }
                finally
                {
                    timer1.Stop();
                    timer2.Start();
                }
            }
            else
            {
                this.btStop.PerformClick();
                MessageBox.Show("A megadott elérési útvonalon nem találhatóak fájlok a művelet(ek)hez!");
            }
        }
        catch (DirectoryNotFoundException)
        {
            btStop.PerformClick();
            MessageBox.Show("Hibás útvonala(kat)t adtál meg!");
        }
    }
}

【问题讨论】:

  • 您是否在尝试删除目录之前检查目录是否为空?并确保该目录不是只读的
  • 我不确定您是否正确转义 txpath1.Text
  • 乔希,不,我现在没有检查它,等我让它工作后,我会的。目录不为空,通常当目录包含 mp3、mp4 或 exe 文件时出现此错误。如果我将一个简单的 pdf 文件放入该目录,我不会收到此错误。
  • Josh,我认为这就是 .Delete() 方法中的第二个参数 (true)(删除递归)。 @user1666620,C# 不应该在读出这个字符串时转义它吗?
  • 顺便说一句:你为​​什么打电话给GetDirectories() txpath1.Text 三次?在第一次调用时将结果缓存在folders 中并使用它。

标签: c#


【解决方案1】:

递归删除只需要使用Directory.Delete(path, true)即可。如果这不起作用,那么它可能是一条格式错误的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多