zoukankan      html  css  js  c++  java
  • 文件重命名(递归)

    假设需要写入日志文件,但是不希望日志文件太大影响程序性能,这时需要将原文件重命名

    //判断文件是否大于10M
                //取得文件大小
                if (File.Exists(logpath))
                {
                    FileInfo MyFileInfo = new FileInfo(logpath);
                    float MyFileSize = (float)MyFileInfo.Length / (1024 * 1024);
                    if (MyFileSize > 10)
                    {
                        //将原文件重命名
                        RenameLog(logpath);
                    }
                }
    
    
            //递归重命名
            private static void RenameLog(string logpath)
            {
                string curPath = System.IO.Path.GetDirectoryName(logpath);//"d:fffffwww"
                string curName = System.IO.Path.GetFileNameWithoutExtension(logpath);//errorlog.txt
                string curExt = System.IO.Path.GetExtension(logpath);//.txt
    
                // 新文件名
                int nextNum = 1;
                string newStr = "";
                try
                {
                    //判断存不存在下一个文件,如果存在就递归
                    nextNum = GetPathNum(logpath) + 1;
                    newStr = curPath + "\" + RemoveNum(curName) + "_" + nextNum + curExt;
                    if (File.Exists(newStr))
                    {
                        RenameLog(newStr);
                    }
                }
                catch
                {
                    newStr = curPath + "\" + curName + "_" + Guid.NewGuid() + curExt;
                }
    
                // 改名方法
                FileInfo fi = new FileInfo(logpath);
                fi.MoveTo(Path.Combine(newStr));
    
            }
            private static int GetPathNum(string pathorname)
            {
                try
                {
                    string curname = System.IO.Path.GetFileNameWithoutExtension(pathorname);
                    if (!curname.Contains('_'))
                    {
                        return 0;
                    }
                    return int.Parse(curname.Split('_')[curname.Split('_').Count() - 1]);
    
                }
                catch
                {
                    return 0;
                }
            }
            //去除名称后的数字号
            private static string RemoveNum(string name)
            {
                try
                {
                    if (!name.Contains('_'))
                    {
                        return name;
                    }
                    return name.Substring(0, name.Length - (name.Split('_')[name.Split('_').Count() - 1].Length + 1));
                }
                catch
                { return name; }
    
            }
    

      效果:

  • 相关阅读:
    yum下载安装mysql服务
    windows编写sh脚本在linux上不能执行
    ectouch第二讲之 文件结构
    ecshop第一讲之安装
    class id 区别
    thinkphp模板中截取中文字符串的方法分享
    CI 配置验证规则
    CodeIgniter配置之config
    codeigniter中base_url和site_url
    使用phpmyadmin导入SQL数据报错:#1062
  • 原文地址:https://www.cnblogs.com/King-JJ/p/6022671.html
Copyright © 2011-2022 走看看