有这么个需求,就是定期删除某个目录里的文件或者目录
1. 修改时间超过一周的文件,无论是在子目录下或者主目录下一律删除
2. 修改时间超过一周的子目录也删除,前提是该目录是一个空目录
代码如何写好呢?

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;namespace CSharp
    {
        class Program
        {
            static void Main(string[] args)
            {            if (File.Exists(@"d:\\expect.txt"))
                {
                    FileInfo fi = new FileInfo("d:\\expect.txt");
                    Console.WriteLine(  fi.LastWriteTime);
                }
            }
        }
    }
      

  2.   

    如下应该可以实现:
     public void DeleteDirectory(string vDestinationPath)
        {
            DirectoryInfo destinatioinDirec = new DirectoryInfo(vDestinationPath);
            //delete directory
            foreach (DirectoryInfo tempDirec in destinatioinDirec.GetDirectories())
            {
                if (tempDirec.LastWriteTime < DateTime.Now.AddDays(-7))
                {
                    tempDirec.Delete();
                    //tempDirec.Delete(true);
                }
            }
            //delete file
            foreach (FileInfo  tempFile in destinatioinDirec.GetFiles())
            {
                if (tempFile.LastWriteTime < DateTime.Now.AddDays(-7))
                {
                    tempFile.Delete();
                }
            }
        }
      

  3.   

    public void DeleteDirectory(string vDestinationPath)
        {
            DirectoryInfo destinatioinDirec = new DirectoryInfo(vDestinationPath);
    //delete file
            foreach (FileInfo  tempFile in destinatioinDirec.GetFiles())
            {
                if (tempFile.LastWriteTime < DateTime.Now.AddDays(-7))
                {
                    tempFile.Delete();
                }
            }        //delete directory
            foreach (DirectoryInfo tempDirec in destinatioinDirec.GetDirectories())
            {
                if (tempDirec.LastWriteTime < DateTime.Now.AddDays(-7))
                {
                   if(tempDirec.GetFiles().Length <=0)
                    tempDirec.Delete();
                    //tempDirec.Delete(true);
                }
            }
                }
      

  4.   

    遍历文件夹获取记文件的修改时间,根据时间判断是否为一周前,再删除文件或记录 
    private void GetFolderInfo(string path) 
            { 
                if (Directory.Exists(path)) 
                { 
                    if (Directory.GetFileSystemEntries(path).Length == 0) 
                    { 
                      
                    } 
                    else 
                    { 
                        string[] fileNames0 = Directory.GetFiles(path); 
                        foreach (string file in fileNames0) 
                        { 
                        
                        } 
                        string[] subdirectoryEntries = Directory.GetDirectories(path); 
                        foreach (string subdirectory in subdirectoryEntries)  
                        { 
                            GetFolderInfo(subdirectory); 
                        } 
                    } 
                } 
            }