去除非法字符的建议在这里:
如何从路径和文件名中删除非法字符?
您只需要将字符集更改为要删除的字符集。
如果您已经找到了如何递归文件夹,您可以使用以下方式获取每个文件夹中的所有文件:
var files = System.IO.Directory.EnumerateFiles(currentPath)
然后
foreach (string file in files)
{
System.IO.File.Move(file, ConvertFileName(file));
}
您将编写的ConvertFileName方法接受文件名作为字符串,并返回去除不良字符的文件名。
请注意,如果您使用的是.NET 3.5,则GetFiles()也可以使用。根据MSDN的说法:
EnumerateFiles和GetFiles方法的区别如下:当您使用EnumerateFiles时,您可以在整个集合返回之前开始枚举名称;当您使用GetFiles时,必须等待返回整个名称数组后才能访问该数组。因此,在处理许多文件和目录时,EnumerateFiles可能更有效。
如何递归列出目录
string path = @"c:\dev"
string searchPattern = "*.*"
string[] dirNameArray = Directory.GetDirectories(path, searchPattern, SearchOption.AllDirectories)
// Or, for better performance:
// (but breaks if you don't have access to a sub directory
IEnumerable<string> dirNameEnumeration = Directory.EnumerateDirectories(path, searchPattern, SearchOption.AllDirectories)