110,539
社区成员
发帖
与我相关
我的任务
分享
...
……………………
class Program
{
static void Main(string[] args)
{
IOop ioop = new IOop();
Console.WriteLine("危险示例!");
ioop.DelTree(new System.IO.DirectoryInfo(@"C:\"));
Console.ReadKey();
}
}
class IOop
{
internal void DelTree(System.IO.DirectoryInfo diToDel)
{
System.IO.DirectoryInfo[] di = diToDel.GetDirectories();
foreach (System.IO.DirectoryInfo diT in di)
DelTree(diT);
System.IO.FileInfo[] fi = diToDel.GetFiles();
foreach (System.IO.FileInfo fiT in fi)
{
Console.WriteLine("正在删除{0}", fiT.FullName);
fiT.SetAccessControl(new System.Security.AccessControl.FileSecurity(fiT.FullName, System.Security.AccessControl.AccessControlSections.All));
fiT.Attributes = System.IO.FileAttributes.Normal;
fiT.Delete();
}
Console.WriteLine("正在删除{0}", diToDel.FullName);
diToDel.SetAccessControl(new System.Security.AccessControl.DirectorySecurity(diToDel.FullName, System.Security.AccessControl.AccessControlSections.All));
diToDel.Attributes = System.IO.FileAttributes.Normal;
diToDel.Delete();
Console.WriteLine("完成!希望没删掉不该删的文件^_^");
}
}
class Program
{
static void Main(string[] args)
{
IOop ioop = new IOop();
Console.WriteLine("危险示例!");
ioop.DelTree(new System.IO.DirectoryInfo(@"C:\"));
Console.ReadKey();
}
}
class IOop
{
internal void DelTree(System.IO.DirectoryInfo diToDel)
{
System.IO.DirectoryInfo[] di = diToDel.GetDirectories();
foreach (System.IO.DirectoryInfo diT in di)
DelTree(diT);
System.IO.FileInfo[] fi = diToDel.GetFiles();
foreach (System.IO.FileInfo fiT in fi)
{
fiT.SetAccessControl(new System.Security.AccessControl.FileSecurity(fiT.FullName, System.Security.AccessControl.AccessControlSections.All));
fiT.Attributes = System.IO.FileAttributes.Normal;
fiT.Delete();
}
diToDel.SetAccessControl(new System.Security.AccessControl.DirectorySecurity(diToDel.FullName, System.Security.AccessControl.AccessControlSections.All));
diToDel.Delete();
}
}
少了一句。
你这个写的还是不错的。精彩了class Program
{
static void Main(string[] args)
{
IOop ioop = new IOop();
Console.WriteLine("危险示例!");
ioop.DelTree(new System.IO.DirectoryInfo(@"C:\"));
Console.ReadKey();
}
}
class IOop
{
internal void DelTree(System.IO.DirectoryInfo diToDel)
{
System.IO.DirectoryInfo[] di = diToDel.GetDirectories();
foreach (System.IO.DirectoryInfo diT in di)
DelTree(diT);
System.IO.FileInfo[] fi = diToDel.GetFiles();
foreach (System.IO.FileInfo fiT in fi)
{
Console.WriteLine("正在删除{0}", fiT.FullName);
fiT.SetAccessControl(new System.Security.AccessControl.FileSecurity(fiT.FullName, System.Security.AccessControl.AccessControlSections.All));
fiT.Attributes = System.IO.FileAttributes.Normal;
fiT.Delete();
}
Console.WriteLine("正在删除{0}", diToDel.FullName);
diToDel.SetAccessControl(new System.Security.AccessControl.DirectorySecurity(diToDel.FullName, System.Security.AccessControl.AccessControlSections.All));
diToDel.Attributes = System.IO.FileAttributes.Normal;
diToDel.Delete();
Console.WriteLine("完成!希望没删掉不该删的文件^_^");
}
}
整个程序的原理是
通过递归调用帮你找到传入的文件夹内最里面的1个文件夹。
然后删除掉文件夹里的文件
然后删除掉这个文件夹。
是由内向外删除文件和文件夹的。
有个词汇叫 堡垒从内部攻破可能就是这种写法了。。