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

使用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 回答
0

可能的重复

System.IO 与 VisualBasic.FileIO

您可以使用 Microsoft.VisualBasic 和 AFAIK 的 FileIO,它不会表现得不合理。

于 2011-04-06T09:37:35.927 回答