C#删除指定目录下3个月前的txt文件

目前使用的删除方法是:
public static void Clean0ldDatagramLog(string Mulu)
var limit = DateTime.Now.AddMonths(-12); 
foreach (DirectoryInfo di in new DirectoryInfo(Mulu) . EnumerateDirectories())
        foreach (DirectoryInfo sdi in di. EnumerateDirectories())
             {
             if (sdi.LastAccessTime < limit)
                {
                     try { sdi.Delete(true); } catch { }
                 }
             }
}

但是经过测试发现文件依然还是没有删除。。。。请大佬们指导小弟一下

public static void Clean0ldDatagramLog(string Mulu)
       { 
              var limit = DateTime.Now.AddMonths(-3); 
             foreach (DirectoryInfo di in new DirectoryInfo(Mulu) . EnumerateDirectories())
             if (sdi.LastAccessTime < limit)
                {
                     try { sdi.Delete(true); } catch { }
                 }
         }
要删除的目录结构为传入参数Mulu文件夹下有很多的txt文件。。只删除3个月之前的txt文件。。保留3个月内的

你删除的是目录,不是文件,删除文件用 File.Delete。

我从百度上找了File类的删除文件方法。但是我只想删除3个月之前的且文件名字变化不定的txt文件应该如何修改??
string path = Environment.CurrentDirectory;
string pattern = "*.txt";
string[] strFileName = Directory.GetFiles(path, pattern);
foreach (var item in strFileName)
{
    File.Delete(item);
}

 private void DelCmd(string path,int day)
        {
            if (!Directory.Exists(path)) return;
            DirectoryInfo oDirectory = new DirectoryInfo(path);
            try
            {
                foreach (DirectoryInfo file in oDirectory.GetDirectories())
                {
                    DateTime dt = file.CreationTime;//获取目录或者文件的创建 日期
                    if ((DateTime.Now - dt).TotalMinutes > day * 24 * 60)
                    {
                        file.Delete(true);
                    }
                }
            }
            catch (Exception ex)
            {

            }
        }

兄弟,你走运啊

 private static void DeleteFolder(string dir)
        {
            foreach (string d in Directory.GetFileSystemEntries(dir))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        fi.Attributes = FileAttributes.Normal;
                    File.Delete(d);//直接删除其中的文件  
                }
                else
                {
                    DirectoryInfo d1 = new DirectoryInfo(d);
                    if (d1.GetFiles().Length != 0)
                    {
                        DeleteFolder(d1.FullName);////递归删除子文件夹
                    }
                    Directory.Delete(d);
                }
            }
        }
        private static void DeleteLogFolder(string dir)
        {
            DirectoryInfo directory = new DirectoryInfo(dir);
            FileInfo[] filelist = directory.GetFiles();
            DirectoryInfo[] directorylist = directory.GetDirectories();
            foreach (var dirct in directorylist)
            {
                DeleteLogFolder(dirct.FullName);
            }
            foreach (FileInfo files in filelist)
            {
                if (files.CreationTime < DateTime.Now.AddDays(-30))
                {
                    files.Delete();
                }
            }
        }

我只想删除指定文件夹下三个月之前的文件(不是文件夹)。。目录结构为D:\ZZJ\Hospital,目录下全部都是txt文件。简略一下是不是只会执行这里面的代码??
foreach (FileInfo files in filelist)
            {
                if (files.CreationTime < DateTime.Now.AddDays(-30))
                {
                    files.Delete();
                }
            }

是的,你可以把它做成一个通用的方法,看自己变通喽 你获取一个文件夹的文件,然后判断文件的日期,根据日期小蜜蜂论坛顶帖机删文件

这个方式,删除指定文件夹下面超过设置时间的文件

 #region 删除目录
        /// <summary>
        /// 删除目录
        /// </summary>
        /// <param name="dir">要删除的目录路径和名称</param>
        public static void DeleteDir(string dir)
        {
            if (dir.Length == 0) return;
            if (Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\" + dir))
                Directory.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\" + dir);
        }
        #endregion

        #region 删除文件
        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="file">要删除的文件路径和名称</param>
        public static void DeleteFile(string file)
        {
            if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file))
            {
                File.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + file);
            }
        }
        #endregion

发布了74 篇原创文章 · 获赞 0 · 访问量 3080

猜你喜欢

转载自blog.csdn.net/netyou/article/details/104493175