zoukankan      html  css  js  c++  java
  • 最正宗的文件重命名

    相信通过File来给文件重命名,大家并不陌生,但是今天我想讲解一种简单,易懂,并且比较罕见的重命名方式:

    那就是利用visual studio自带的程序集框架进行重命名操作:

    1.先添加引用:Microsoft.VisualBasic,再加上using Microsoft.VisualBasic.Devices;
    2.就下面两行

    Computer MyComputer = new Computer();
    MyComputer.FileSystem.RenameFile(FileName, newFileName);
    其中FileName是你所要重命名的文件的全路径,newFileName仅仅是目标文件名;

    具体代码如下:

    using Microsoft.VisualBasic.Devices;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace frmCopyFile
    {
        public partial class frmSecond : Form
        {
            public frmSecond()
            {
                InitializeComponent();
            }
    
            private void btnCopy_Click(object sender, EventArgs e)
            {
                string formatTime = DateTime.Now.ToString("yyyy-MM-dd");
                //拼接重命名文件的字符串
                string rename_condition = formatTime.Replace("-", "");
                //动态拼接文件夹的字符串
                string dir_condition = GetNewPath(formatTime);
                //获取78服务器路径
                string path = @"\\10.0.0.78\d$\备份\sql2000\" + dir_condition;
                DirectoryInfo folder = new DirectoryInfo(path);
    
                foreach (FileInfo file in folder.GetFiles("*.*"))
                {
                    string extension = file.Extension.ToLower();
                    if (extension == ".abf" || extension == ".cab")
                    {
                        string name = GetFileNameExceptExtension(file.Name, rename_condition);
                        if ("" != name)
                        {
                            if (!File.Exists(path + @"\" + name + file.Extension))
                            {
                                Computer MyComputer = new Computer();
                                //其中第一个参数是要重命名的文件的全路径,第二个参数仅仅是目标文件名;
                                MyComputer.FileSystem.RenameFile(file.FullName, name + file.Extension);
                            }
                        }
                    }                
                }
                MessageBox.Show("已完成");
            }
    
             private string GetFileNameExceptExtension(string name,string condition)
            {
                string filename = "";
                int pos = name.IndexOf('.');
                if(pos>-1)
                {
                    filename = name.Substring(0, pos);
                }
                //正常情况下,例如energy.abf,加上后缀是enery20151201.abf,但是如果这时有新处理了一些库,比如多了个hanye.abf库,需要对当前文件夹重新处理
                //那么enery20151201.abf将又会被添加一次日期后缀,所以下列操作就是为了避免此情况的发生
                string isReply = "";
                //如果添加了日期后缀的文件,那么长度一定大于8,在此判断是为了避免未重命名的文件的名字太短,而导致的filename.Length - 8 
                //这句话报异常
                if (filename.Length > 8)   
                {
                    isReply = filename.Substring(filename.Length - 8);            
                }
    
                if ("" != filename && isReply != condition)
                {
                    //国际贸易有两个库,分为高级查询(internationaltrade)和其他查询(internationaltrade2),此处主要作用是判断高级查询
                    //原因:如果不加个分隔符,那么格式化后的国际贸易库是这样的internationaltrade220151130,
                    //if (filename.Contains("2"))
                    //{
                    //    filename = filename + "_" + condition;
                    //}
                    //else
                    //{
                        filename = filename + condition;
                    //}
                }
                
                return filename;
            }
            /// <summary>
            /// 格式化日期
            /// </summary>
            /// <param name="condition"></param>
            /// <returns></returns>
            private string GetNewPath(string condition)
            {
                string dir_condition = "";
                string[] strArray = condition.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
                dir_condition = strArray[0] + strArray[1];
                return dir_condition;
            }
    
        }
    }
  • 相关阅读:
    phpfpm进程数设置多少合适
    GitLab的安装及使用教程
    男人的中年危机坏在哪?(转载)
    让敏捷落地,从“认识自我”开始
    优化你的架构设计
    工作中的那点事儿是工作经验,还是思路给了你生存的能力(原创)
    窗口过程处理WndProc遇到的问题
    CodeBlocks 10.0+OpenCV 2.4.0配置方法
    OpenCV在VS2010下永久性配置
    Win8下的STCISP下载问题解决
  • 原文地址:https://www.cnblogs.com/chzbgb/p/6801389.html
Copyright © 2011-2022 走看看