我在一个文件夹下有若干文件,文件名的格式为:8888_序号A.jpg 8888_序号B.jpg 8888_序号C.jpg
A、B、C为一组具体如下:
--------------------------------------------------
8888_0001A.jpg
8888_0001B.jpg
8888_0001C.jpg
8888_0002A.jpg
8888_0002B.jpg
8888_0002C.jpg
8888_0003A.jpg
8888_0003B.jpg
8888_0004A.jpg
8888_0005A.jpg
8888_0005C.jpg-------------------------------------------------
找出以上文件中序号相同,同时A B C 其全的文件,例如:0002序号中A B C 三张图片是其全的,列出文件名;
A B C 有一张或两张不存在的将其删除处理经处理后,得到序号为0001,0002两个序号的图片为A B C 两组图片
最好写成一个C# 函数,请高手指教,不胜感激
A、B、C为一组具体如下:
--------------------------------------------------
8888_0001A.jpg
8888_0001B.jpg
8888_0001C.jpg
8888_0002A.jpg
8888_0002B.jpg
8888_0002C.jpg
8888_0003A.jpg
8888_0003B.jpg
8888_0004A.jpg
8888_0005A.jpg
8888_0005C.jpg-------------------------------------------------
找出以上文件中序号相同,同时A B C 其全的文件,例如:0002序号中A B C 三张图片是其全的,列出文件名;
A B C 有一张或两张不存在的将其删除处理经处理后,得到序号为0001,0002两个序号的图片为A B C 两组图片
最好写成一个C# 函数,请高手指教,不胜感激
//using System.IO;
private void ListFolderFiles(DirectoryInfo dirinfo)
{
FileSystemInfo[] files = dirinfo.GetFileSystemInfos ("*.jpg ");
Dictionary<string, int> dic = new Dictionary<string, int>();
for (int i = 0; i < files.Length; i++)
{
FileInfo file = files[i] as FileInfo;
string key = file.Name.Substring(0, file.Name.LastIndexOf('.')-1);
if (!dic.ContainsKey(key))
{
dic.Add(key, 1);
}
else
{
dic[key] += 1;
}
} for (int i = files.Length - 1; i >= 0; i--)
{
FileInfo file = files[i] as FileInfo;
if (dic[file.Name.Substring(0, file.Name.LastIndexOf('.') - 1)] < 3)
{
files[i].Delete();
}
else
{
MessageBox.Show(file.Name);
}
}
} //调用(假如操作C:\pic目录下的jpg文件)
DirectoryInfo c = new DirectoryInfo("c:\\pic ");
ListFolderFiles(c);
比如:返回
8888_0001A.jpg 8888_0001B.jpg 8888_0001C.jpg8888_0002A.jpg 8888_0002B.jpg 8888_0002C.jpg