c#中的文件系统等价

本文关键字:文件系统 | 更新日期: 2023-09-27 17:49:02

我使用VS 2008, .net 3.5, c#项目。我需要做同样的功能像microsoft . visualbasic . fileio . filessystem . deletedirectory .

有人说引用微软。VisualBasic在c#中通常是不受欢迎的。c#代码中与VB的任何关联都不受欢迎。

使用FileSystem类,这是一个完美的解决方案,但我不喜欢引用微软。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);

c#中的文件系统等价

可能重复

系统。IO vs . VisualBasic。FileIO

你可以使用微软的FileIO。VisualBasic和AFAIK不会表现得不合理…

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。

您可以尝试以下操作:

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

或者

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