每天都是崭新的
期待一次一个人的旅行

由于工作原因制作了一个小的文件名称转换工具,下面简单介绍一下。

需求:文件中有很多的字符在做一些操作的时候是非法的,例如&等等。所以需要一个工具来去除或者替换掉这些非法的字符。

在晚上查询了一些C#转换文件名字的方法。很多都是利用复制到另外一个目录的方式来变相的解决这个问题的,这个不是我想要的,最后发现一个Com组件可以提供直接变换文件名称的方法,Microsoft Scripting Runtime。下面我就来说下是如何实现的:

  首先是建立一个winform工程,在Com组件中找到我们需要的Scripting,添加引用,如图

  

  下面是关键的代码:

  

代码
 1         private void ConvertFileName(DirectoryInfo d)
 2         {
 3             // 所有文件大小.
 4             FileInfo[] fis = d.GetFiles();
 5             foreach (FileInfo fi in fis)
 6             {
 7                 string fileName = fi.Name;
 8                 foreach (string key in ConfigStack.Keys)
 9                 {
10                     fileName = fileName.Replace(key, ConfigStack[key]);
11                 }
12 
13                 if (fileName != fi.Name)
14                 {
15                     FileSystemObject fso = new FileSystemObjectClass();
16                     fso.GetFile(fi.FullName).Name = fileName;
17                     this.listBox1.Items.Add(fi.FullName + "   转换为:   " +         fileName);
18                 }
19             }
20             // 遍历出当前目录的所有文件夹.
21             DirectoryInfo[] dis = d.GetDirectories();
22             foreach (DirectoryInfo di in dis)
23             {
24                 ConvertFileName(di);   //这就用到递归了,调用父方法,注意,这里并不是直接返回值,而是调用父返回来的
25             }
26         }

 

    其中最关键的是15、16行的代码,获取一个文件信息,然后更新文件的名称即可。

    其实这个功能也不是难,我会把源码放在这边提供下载。希望能帮到使用到这个功能的同学,呵呵。

    源码

  
posted on 2010-06-03 15:36  我的小作坊  阅读(175)  评论(0编辑  收藏  举报