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);
可能重复
系统。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");