文件重命名(递归)

摘要:
假设需要写入日志文件,但是不希望日志文件太大影响程序性能,这时需要将原文件重命名//判断文件是否大于10M//取得文件大小if(File.Exists(logpath)){FileInfoMyFileInfo=newFileInfo(logpath);floatMyFileSize=(float)MyFileInfo.Length/(1024*1024);if(MyFileSize˃10){//将

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

//判断文件是否大于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; }

        }

效果:

文件重命名(递归)第1张

免责声明:文章转载自《文件重命名(递归)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇teamlab与redmine试用对比报告MP实战系列(十四)之分页使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JDBC操纵数据库的步骤(以SQLServer为例)

JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数...

debezium关于cdc的使用(上)

博文原址:debezium关于cdc的使用(上) 简介 debezium是一个为了捕获数据变更(cdc)的开源的分布式平台。启动并指向数据库,当其他应用对此数据库执行inserts、updates、delete操作时,此应用快速得到响应。debezium是持久化和快速响应的,因此你的应用可以快速响应且不会丢失任意一条事件。debezium记录是数据库表的行...

加密文件之Java改进版

对应Python版:加密文件之Python版Java版比Python版要快得多,两个版本不在一个量级上。在加密解密1G大文件时,Java版花费的时间是秒级,而Python版花费的时间是10分钟级。 import java.io.File; import java.io.IOException; import java.io.RandomAccessFi...

【Ubuntu】Ubuntu常用文件操作命令

Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限) sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限) sudo chmod 700 ××× (只有所有者有读和写以及执行的权限) sudo chmod 666 ××× (每个人都有读和...

记一次 synchronized 锁字符串引发的坑兼再谈 Java 字符串

业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间。 并发下,取IP是有一定策略的,取到IP之后拿IP对应的COOKIE,发现COOKIE超过失效时间,则调用脚本访问网站N获取一次数据。 为了防止多线程取到同一个IP,同时发现该IP对应的COOKIE失效,同时去调用脚本更新...

关于Quartz .NET(V3.0.7)的简要说明

目录 0. 任务调度 1. Quartz .NET 1.1 基本概念 1.2 主要接口和对象 2. 使用示例 2.0 准备工作 2.1 每间隔一定时间间隔执行一次任务 2.3 某天的固定时间点执行任务 2.4 封装整个定时任务,并给任务传递参数 2.5 关于调度器的一些说明 2.6 关于监听器 参考及示例代码下载 shanzm-202...