请教分拣歌词文件(处理中文排序)
问题:小弟我今天在网上下载了一个winamp播放歌词的插件 然后又下载了一个压缩包 --歌词一万首。可是解压以后,由于放在一个文件夹下,文件虽然小,但是太多了(10300多个2k大小的文件)打开的时候非常非常的慢。我想根据字母顺序排序,在这个文件夹下建立A-Z的文件夹,把a打头的文件全部放到文件夹A下,依此类推,以提高访问速度。 现在问题就来了,诸如“无印良品....”“王菲....”,“王杰....”等文件归入W文件夹下,请高手不吝指教!
下面是我处理0-9,A-Z打头的文件的代码,希望各位多多指点。
using System;
using System.IO;
namespace 分拣歌词
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string dir="G:\\doc\\";
string desDir;
for(char c='A';c<='Z';c++)
{
desDir=dir+c;
if(!Directory.Exists(desDir))//如果文件夹不存在则建立之
{
Directory.CreateDirectory(desDir);
}
}
for(char c='0';c<='9';c++)
{
desDir=dir+c;
if(!Directory.Exists(desDir))//如果文件夹不存在则建立之
{
Directory.CreateDirectory(desDir);
}
}
string[] songs = Directory.GetFiles(dir);
foreach(string song in songs)
{
char c='A';
int begin=song.LastIndexOf("\\")+1;
int length=song.Length-begin;
string fileName=song.Substring(begin,length).Trim();//取得文件名 并去除前后空格
while(c<='Z')//移动开头'a'到'z'的文件
{
if(fileName[0]==c ¦ ¦fileName[0]==c+'a'-'A')
{
string des=dir+c+"\\"+fileName;
try
{
File.Move(song,des);
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
Console.WriteLine("歌词{0}-->{1}",song,des);
}
c++;
}
c='0';
while(c<='9')//移动开头'0-9'的文件
{
if(fileName[0].Equals(c))
{
string des=dir+c+"\\"+fileName;
try
{
File.Move(song,des);
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
Console.WriteLine("歌词{0}-->{1}",song,des);
}
c++;
}
}
Console.WriteLine("\n\n处理完毕0-9,a-z,A-Z,但是中文暂无处理!");
Console.Read();
}
}
}