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

      效果:

  • 相关阅读:
    [转] 使用C#开发ActiveX控件
    [转] error LNK2026: 模块对于 SAFESEH 映像是不安全的
    Struts2详细说明
    a web-based music player(GO + html5)
    oracle_单向函数_数字化功能
    UVA 1364
    ORA-12545: Connect failed because target host or object does not exist
    左右v$datafile和v$tempfile中间file#
    二十9天 月出冲击黑鸟 —Spring的AOP_AspectJ @annotation
    Shell编程入门(再版)(在)
  • 原文地址:https://www.cnblogs.com/King-JJ/p/6022671.html
Copyright © 2011-2022 走看看