在c#中选择具有特定文件名的文件

时间:2012-06-07 02:58:54

标签: c#-4.0

我有一个包含大约200,000个jpeg图像的文件夹。以下是我能找到的文件名的格式

  1. BATCHID_GROUPID ex:501234_20123.jpg
  2. BATCHID_GROUPID ex。 501235_20124_1.jpg,501235_20124_2.jpg,501235_20124_3.jpg。每种类型的图像最多包含10张BATCHID_GROUPID图像。我的意思是这个集合的最大值是501235_20124_10.jpg
  3. 我需要拍摄所有不以_x或_xx结尾的图像,即_1.jpg或_2.jpg或_10.jpg并选择BATCHID并将其复制并将其FTP到其他位置

    对于以_x或_xx结尾的那些,我需要选择BATCHID并创建一个名为batchID的文件夹,并将所有以_X结尾的文件移动到_xx中。

    由于

1 个答案:

答案 0 :(得分:0)

尝试在文件名上使用String.Split,检查长度以确定要复制它的位置,并将第一个索引作为BATCHID:

这样的事情:

DirectoryInfo di = new DirectoryInfo("SourcePath");
IEnumerable<FileInfo> fileinfo = di.EnumerateFiles();
foreach(FileInfo fi in fileinfo)
{
    string[] tmp = fi.Name.Split('_');
    if (tmp.Length == 3)
    {
        if (!Directory.Exists("YourPath"))
        {
            Directory.CreateDirectory("YourPath" + tmp[0].ToString());
            fi.MoveTo("YourPath" + tmp[0].ToString() + @"\" + fi.Name);

        }
        else
            fi.MoveTo("YourPath" + + tmp[0].ToString() + @"\" + fi.Name);

    }
    else if (tmp.Length == 2)
    {
        //Copy Batch Id and Ftp logic
    }
}