假设需要写入日志文件,但是不希望日志文件太大影响程序性能,这时需要将原文件重命名
//判断文件是否大于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:\ffff\fwww" 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; } }
效果:
时间: 2024-10-12 04:06:59