6

VS 2008、.net 3.5、C# プロジェクトを使用しています。Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory と同じ機能を実行する必要があります。

多くの場合、C# 内から Microsoft.VisualBasic を参照することは望ましくないと誰もが言います。C# コード内からの VB との関連付けは望ましくないと思います。

FileSystem クラスを使用すると、これは完全に優れたソリューションですが、Microsoft.VisualBasic ライブラリを参照しないことを好みます。それは私が避けるだろう。

     private static void DeleteDirectory(string destino)
            {
    //UIOption Enumeration. Specifies whether to visually track the operation's progress. Default is UIOption.OnlyErrorDialogs. Required.

    //RecycleOption Enumeration. Specifies whether or not the deleted file should be sent to the Recycle Bin. Default is RecycleOption.DeletePermanently.

    //UICancelOption Enumeration. Specifies whether to throw an exception if the user clicks Cancel. Required.
                Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(destino, 
Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, 
Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently, 
Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException);
                //Directory.Delete(destino, true);
            }

その他のサンプル: ファイルを削除する代わりにごみ箱に入れるにはどうすればよいですか?

Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(file.FullName,
    Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
    Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
4

4 に答える 4

1

同じ/類似の機能がSystem.IO名前空間内で利用可能です:

System.IO.FileInfo fi = new System.IO.FileInfo("C:\\Test.txt");
fi.Delete();

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("C:\\Test");
di.Delete(true); //Recursive, pass false for no recursion.

私は既存のSendToRecycleBin同等物を認識していませんが、試すことができます:

di.MoveTo("C:\\$Recycle.Bin\\S-..."); //You'd need to know the SID of the user logged in

例を複製するには
次のコードは、例として提供したものと同様のものを提供します。

try
{
    bool deletePermanently = true; //Set to false to move

    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("C:\\Test");
    if (deletePermanently)
    {
        if (di.Exists)
            di.Delete(true);
    }
    else
    {
        if (di.Exists)
            di.MoveTo("C:\\$Recycle.Bin\\S-0-0-00-00000000-000000000-0000000000-000"); //Replace with your SID
    }
}
catch
{
    Console.WriteLine("Error deleting directory"); //Add exception detail messages...
}

繰り返しますが、上記の例では、ごみ箱に送信する前にユーザーの SID を識別する必要があります。

于 2011-04-06T09:36:34.627 に答える
0

重複の可能性

System.IO と VisualBasic.FileIO の比較

Microsoft.VisualBasic の FileIO を使用できます。AFAIK では、不合理な動作はしません。

于 2011-04-06T09:37:35.927 に答える
0

Directory.Deleteメソッドのように、ごみ箱を使用せずにディレクトリを直接削除する場合は、を使用しますDeleteDirectory。ごみ箱を使用するには、リンクした質問で提供されている解決策に固執してください。

于 2011-04-06T09:34:37.243 に答える
0

以下を試すことができます。

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("C:\\MyDirectoryToDelete");
di.Delete(true);

あるいは

System.IO.Directory.Delete("Path goes here");

お役に立てれば。

于 2011-04-06T09:35:01.723 に答える