文件重命名(递归)
Posted 慕凡尘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件重命名(递归)相关的知识,希望对你有一定的参考价值。
假设需要写入日志文件,但是不希望日志文件太大影响程序性能,这时需要将原文件重命名
//判断文件是否大于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; } }
效果:
以上是关于文件重命名(递归)的主要内容,如果未能解决你的问题,请参考以下文章