文件自动分类

使用指定的关键词来对指定目录下的文件进行分类。

 下载

 

分类规则:

分类效果:

 

实现过程包含几步:

1. 指定源路径和目标路径

2. 指定分类规则:某一类对应的文件夹名称和关键词列表,格式如:音乐:.mp3,.wmv,wav

3. 创建分类文件夹;检查源路径下的每个文件名是否包含关键词,如果包含就复制到对应的文件夹

if (fileName[ii].Find(folder_key[i][j], 0) >= 0) {						
	BOOL ret = CopyFile(srcDir+'\\'+fileName[ii], folderpath+'\\'+fileName[ii], FALSE);
	if (ret == FALSE) {
		StaticText_status.SetWindowTextA("文件复制失败:" + srcDir + fileName[ii]);
		Sleep(1000);
	}

 

4. 保存源目录下文件列表到目标路径

	CFileFind finder;
	BOOL working = finder.FindFile(srcDir+"\\*.*");
	while (working) {
		working = finder.FindNextFile();
		if (!finder.IsDots() && !finder.IsDirectory()){
			fileName[fileCnt  ] = finder.GetFileName();
			filePath[fileCnt++] = finder.GetFilePath();
		}
	}

 

 

几个细节问题:

1. 如果一个文件名包含了不同类的关键词,是将该文件分别复制到对应的不同类中

2. 保存源文件名及路径列表到目标路径(如果复制过程出错了,可以通过列表找到源文件)

3. 如果目标文件夹已经存在,可以选择是否合并

 

几个待解决问题:

1. 没有考虑子文件夹

2. 如果子文件夹是一个包含视频和对应字幕的文件夹,分类时应该将该文件夹作为一个整体复制过去

3. 支持多个源目录到指定目录的分类

4. 效率问题:如果文件总数为10^6,关键词列表有1000个,如何提高效率?

 

posted @ 2013-12-06 22:31  努力变瘦  阅读(411)  评论(0编辑  收藏  举报