1
String userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
String dr = @"C:\Users\" + userName + @"\AppData\temp";

 DirectoryInfo dir = new DirectoryInfo(@dr);
 foreach (FileInfo file in dir.GetFiles())
 {
     file.Delete();
 }
 foreach (DirectoryInfo dire in dir.GetDirectories())
 {
     dire.Delete(true);
 }

フォルダーのコンテンツを削除するためにこれを使用していましたが、これはコンピューターのユーザー名に依存する必要があり、管理者権限を提供しました
が、ファイルが削除されない場合、そのファイルでの動作が停止します。このプロセスを完了させたい

4

3 に答える 3

1
String userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
String dr = @"C:\Users\" + userName + @"\AppData\temp";
DirectoryInfo dir = new DirectoryInfo(@dr);
foreach (FileInfo file in dir.GetFiles())
{
    try
    {
        file.Delete();
    }
    catch (IOException ex)
    {//Log ex.message
        continue;
    }
}
foreach (DirectoryInfo dire in dir.GetDirectories())
{
    try
    {
        dire.Delete();
    }
    catch (IOException ex)
    { //Log ex.message
        continue;
    }
}

さらに、文字列を連結する代わりにPath.Combine()を使用することをお勧めします。

于 2013-04-15T16:42:40.780 に答える
1

ファイル削除ステートメントの周りに try/catch ブロックを追加して、例外が発生した場合でもループが続行されるようにする必要があります。delete を呼び出したときに例外をスローしたファイルのリストをログに記録することをお勧めします。

于 2013-04-15T16:40:27.990 に答える
1

いずれかのファイルが削除されない場合、への呼び出しfile.Delete()で例外がスローされます。

それを処理したい場合は、次のように try/catch でラップする必要があります。

foreach (FileInfo file in dir.GetFiles())
{
    try
    {
        file.Delete();
    }

    catch (IOException exception)
    {
        // Here you should log the exception.Message
    }
}
于 2013-04-15T16:41:33.200 に答える