控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

C#实现本地复制文件或者文件夹建立副本取名功能

作者:佚名 出处:互联网 2011年05月05日 阅读:

C#实现本地复制文件或者文件夹建立副本取名功能
 
本地复制文件或者文件夹建立副本取名功能,完全模仿Windows下复制文件和文件夹的功能,直接调用方法,返回复制后的新对象名称。

View Code
 1         /// <summary>
 2         /// 检查要为复制的文件或者文件夹重命名的名称
 3         /// </summary>
 4         /// <param name="destFileName">复制的源文件的名称</param>
 5         /// <param name="isDirectory">True是目录\False是文件</param>
 6         /// <returns>新文件或者文件夹的名称</returns>
 7         internal static string GetCopyObjectName(string sourceName, bool isDirectory)
 8         {
 9             try
10             {
11                 //要返回的对象名称
12                 string ReturnFileName = string.Empty;
13                 /*根据源文件名称复制出来的已经存在的副本文件名称的序号集合
14                  * eg. 源文件 :Index.html 复制后会有  Index -副本.html、Index -副本 (2).html、Index -副本 (3).html...;
15                  * 这里取序号 2、3填入集合
16                 */
17                 ArrayList FileName = new ArrayList();
18                 //同级目录下所有相同类型对象的名称
19                 string[] AllObjectName = isDirectory
20                                       ? Directory.GetDirectories(Path.GetDirectoryName(sourceName), "*", SearchOption.TopDirectoryOnly)   //目录
21                                       : Directory.GetFiles(Path.GetDirectoryName(sourceName), string.Format("*{0}", Path.GetExtension(sourceName)), SearchOption.TopDirectoryOnly); //文件
22                 //复制源的对象名称
23                 string SourceFileName = string.Format("{0} -副本", Path.GetFileNameWithoutExtension(sourceName));
24                 //同一目录中已经存在同种类型的对象的名称
25                 string ExistFileName = string.Empty;
26                 //遍历同种源复制出来的对角名称个数名,取其序号
27                 foreach (string var in AllObjectName)
28                 {
29                     //已经存在的无后缀的文件名
30                     ExistFileName = Path.GetFileNameWithoutExtension(var);
31                     //判断是否存在源文件的副本文件,存在则把所有副本的序号填充到集合
32                     if (ExistFileName.Contains(SourceFileName))
33                     {
34                         //抽取新建文件名中的序号
35                         string tmpstr = ExistFileName.Replace(SourceFileName, string.Empty).ToString().Replace("(", string.Empty).Replace(")", string.Empty).Trim();
36                         if (tmpstr.Equals(string.Empty))
37                         {
38                             FileName.Add(1);
39                             continue;
40                         }
41                         int novalue;
42                         //把序号转换成数值型
43                         if (int.TryParse(tmpstr, out novalue))
44                         {
45                             FileName.Add(novalue);
46                             continue;
47                         }
48                     }
49                 }
50                 //给集合按数字序号从小到大排序
51                 FileName.Sort();
52
53                 string usevalue = string.Empty;
54                 for (int i = 0; i < FileName.Count; i++)
55                 {
56                     int objectNo = i + 1; //索引处对象名称序号应该对应的序号值
57
58                     //查找数字序列中是否不完整,
59                     if (!FileName[i].ToString().Equals(objectNo.ToString()))
60                     { //如果不存在则选择这个值
61                         usevalue = objectNo.Equals(1) ? string.Empty : objectNo.ToString();
62                         break;
63                     }
64                     else
65                     { //如果存在,则加1后,继续循环
66                         usevalue = (objectNo + 1).ToString();
67                         continue;
68                     }
69                 }
70                 if (!usevalue.Equals(string.Empty)) //如果不为空给序号加上括号
71                     usevalue = "(" + usevalue + ")";
72                 //组合文件名称
73                 ReturnFileName = Path.Combine(Path.GetDirectoryName(sourceName), string.Format("{0} {1}", SourceFileName, usevalue)).Trim();
74                 if (!isDirectory) //如果不是目录,加上对象的后缀名
75                     ReturnFileName += Path.GetExtension(sourceName);
76                 //返回文件名称
77                 return ReturnFileName.Trim();
78             }
79             catch (Exception ex)
80             {
81                 throw new Exception(ex.Message);
82             }
83         }
 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统