2016-08-03 13 views
0

完全なディレクトリを削除する必要のあるプログラムがありますが、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!"); 
     } 
    } 
} 
+1

ディレクトリを削除しようとする前に空であることを確認していますか?そして、ディレクトリが読み込み専用でないことを確認してください。 – Josh

+0

'txpath1.Text'を正しくエスケープしているかどうかわかりません。 – user1666620

+0

ジョシュ、いいえ、私はそれを働かせることができた後、私はそれを今チェックしなかった。ディレクトリは空ではありません。通常、ディレクトリにmp3、mp4、またはexeファイルが含まれている場合、このエラーが発生します。私はそのディレクトリに私はこのエラーを取得しない単純なPDFファイルを配置する場合。 – celodir

答えて

0

再帰的に削除するには、Directory.Delete(path, true)を使用する必要があります。それがうまくいかない場合は、不正なパスになる可能性があります。

関連する問題