日期:2014-05-18 浏览次数:21027 次
private void process()
{
// 这里假设d:/test/目录下只有一级文件夹,即,D:/test/下只有1,2,3,4,5,6 之类的文件,而1下面再也没有文件夹了。而这些1,2,3文件夹下的文件名,只有a.txt,b.txt,c.txt.....
var files = Directory.GetFiles( @"D:/test/" );
Regex reg = new Regex( @"(D:/test/)([^/]*)/([^.]*\.txt)", RegexOptions.IgnoreCase );
if ( files != null )
{
int fileCount = 0; // 文件总数
int errCount = 0; //错误总数
foreach ( var file in files )
{
var m = reg.Match( file );
if ( m.Success )
{
fileCount++;
if ( getDirName( m.Groups[3].Value ) == m.Groups[2].Value )
{
// 移到正确的位置
File.Move( file, m.Groups[1].Value + getDirName( m.Groups[3].Value ) + m.Groups[3].Value );
}
else
errCount++;
}
}
}
// 总数:fileCount;
// 错误:errCount;
// 错误率:errCount/(fileCount * 1.0)
}
/// <summary>
/// 判断该文件应该放在什么文件夹下(也就是对应规则设置的地方了,假设文件名是A.txt,B.txt等等)
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
private string getDirName( string fileName )
{
/// 即,表示,如果文件名第一个符是A。则返回应该存放的文件夹名应该是 1,如果是Z的话,则返回26
return Convert.ToInt32( fileName[0] - 'A' + 1 ).ToString();
//// 或者
//switch ( fileName )
//{
// case "A.txt": return "1";
// case "B.txt": return "2";
// default: return "";
//}
}