| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1099 人关注过本帖
标题:C#文件操作
只看楼主 加入收藏
落羽飘寻
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-2-17
收藏
得分:0 
恩...就是要每次递归都在win03里,在他里面在找他的子文件夹,请问如何改 谢谢
2010-02-20 16:42
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
收藏
得分:0 
晕死,你那代码错得太离谱了,命名的习惯也不好,看来你现在用递归不合适啊,还是帮你改一下吧

        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;
            }
        }
2010-02-22 09:58
快速回复:C#文件操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved