恩...就是要每次递归都在win03里,在他里面在找他的子文件夹,请问如何改 谢谢
晕死,你那代码错得太离谱了,命名的习惯也不好,看来你现在用递归不合适啊,还是帮你改一下吧
static void Main(string[] args)
{
//在这就确实要删除的目录
DirectoryInfo di = new DirectoryInfo(@"F:\win03\");
int count = di.GetFiles().Length;
int count2 = di.GetDirectories().Length;
Console.WriteLine("before files: " + count);
Console.WriteLine("before folder: " + count2);
CheckFolderIsNull(di);
Console.WriteLine("after files: " + count);
Console.WriteLine("after folder: " + count2);
}
static bool CheckFolderIsNull(DirectoryInfo di)
{
// 这是收取当前目录di的文件信息
FileInfo[] fiArr = di.GetFiles();
// 当前目录所包含的所有目录
DirectoryInfo[] diArr = di.GetDirectories();
//这组命名很不好,nowDate,lastDate
DateTime DateTime2;
DateTime DateTime1;
string dateDiff = null;
TimeSpan ts;
//这个foreach 的作用是删除掉超过时间的文件
foreach (FileInfo fri in fiArr)
{
DateTime2 = DateTime.Now;//现在时间
DateTime1 = fri.LastWriteTime;
//命名...
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
ts = ts1.Subtract(ts2).Duration(); //显示时间
//DateTime1 = Convert.ToDateTime(); //设置要求的减的时间
//string.Format("该文件距离上次访问时间相差:{0}天{1}小时", ts.Days.ToString(), ts.Hours.ToString() ... );
dateDiff = "该文件距离上次访问时间相差:" + ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
Console.WriteLine(fri.Name + " " + dateDiff);
if (ts.Days >= 10)
fri.Delete();
}
//这是让它所有的下一层目录执行和它自己同样的操作
foreach (DirectoryInfo d in diArr)
{
if (!CheckFolderIsNull(d))
{
return false;
}
}
//重新得到文件列表,如果没有文件就是空目录
fiArr = di.GetFiles();
if (fiArr.Length > 0)
{
return false;
}
else
{
di.Delete();
Console.WriteLine("已经清理多余文件!");
return true;
}
}