文件重命名(递归)

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

//判断文件是否大于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-07-28 22:47:37

文件重命名(递归)的相关文章

利用datafile copy将数据文件重命名

思路: o 利用RMAN对数据文件做copy o 将数据文件offline o switch文件名,这一步将更改控制文件中数据文件对应的文件名 o recover数据文件 o 将数据文件online,恢复生产 注:也可以利用这种思路做DATABASE COPY,然后做SWITCH DATABASE,迁移数据库... 实验过程如下: ====================================== SQL> archive log list; Database log mode    

java 获取文件名(不包括文件的后缀)和文件重命名

获取文件名(不包括后缀) originalFileName.substring(0, originalFileName.lastIndexOf(".")) 文件重命名 public void renameFile(String file, String toFile) { File toBeRenamed = new File(file); //检查要重命名的文件是否存在,是否是文件 if (!toBeRenamed.exists() || toBeRenamed.isDirector

oc NSFileManager 文件夹创建、文件移动、文件复制、文件重命名

// 初始化管理类 NSFileManager * manager = [NSFileManager defaultManager]; // 路径 NSString * DirectoryPath = [NSHomeDirectory() stringByAppendingPathComponent:@"/desktop/我的文件夹1/我的文件夹2"]; NSError * error = nil; if ([manager createDirectoryAtPath:Director

ListView 文件重命名

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, ComCtrls, StdCtrls; type   TForm1 = class(TForm)     ListView1: TListView; ListView2: TListView; Button1: TButton; Edit1: TEdit; Edit2:

Java用来进行批量文件重命名,批量提取特定类型文件

原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一个一个找出来太麻烦,所以做了第二个功能.       最近刚刚学了Java文件和流的知识,所以正好练练手,这也是自己的第一个exe程序,分享一下哈. (导出jar文件,以及用工具exe4j生成exe文件,这部分省略了哈) 用到的知识: 用到Java中文件,流的知识,以及简单的GUI知识. 功能:  

文件重命名的几种写法

现在主要的是通过往ZwSetInformationFile发送HANDLE和改名请求 再者就是 往 IoSetInformation 发送FILEOBJECT和改名请求以及我自己模仿iosetinformation写成的创建IRP改名 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4

Linux环境给文件重命名

Linux环境给文件重命名时,如果重命名后的文件名称与当前路径下已存在的文件名称相同,则重命名的文件会覆盖相同名称的文件内容: 例如:新建文件testfile1,内容为mytest: 新建文件testfile2,内容为test: 执行mv testfile1 testfile2  命令后,当前路径只有一个testfile2文件,内容为mytest; 测试同名文件到达处理机制时要注意:

Linux rename命令文件重命名的用法汇总

Linux命令中的rename命令主要用于给文件重命名,与mv命令有些类似,但rename可以对批量文件进行重命名,而mv命令则只能对单个文件重命名,下面就给大家详细介绍下Linux rename命令的使用方法吧. Linux的 rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C

Linux下文件重命名、创建、删除、修改及保存文件

一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 格式mv [options] 源文件或目录 目标文件或目录.主要参数[options]-i:交互方式操作.如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件. -f:禁止交互操作.mv操作要覆盖某个已有的目标文件时不给任何指示,指定