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; }
    
            }
    

      效果:

  • 相关阅读:
    MaxScript键盘控制盒子的移动
    MaxScript无需窗口的Timer
    Max用.Net的Dictionary将汉字转化为拼音
    关于技术美术的一些个人理解
    Max的工具部署与安装
    用以加强MaxScript的补充
    MaxScript 清除超出范围的关键帧
    Max2008之前版本旋转视图的函数
    面向对象设计的原则迪米特原则(转)
    LDAP资料
  • 原文地址:https://www.cnblogs.com/King-JJ/p/6022671.html
Copyright © 2011-2022 走看看