C#实现将图片另存到新建的文件夹中

需求:

       将目录fullPath下的图片.jpg文件分类存储到指定的文件夹中(指定的文件夹要求以图片中某个特殊字符串作为名字),例如fullPath目录下的图片文件名称如下:

      0000098286-1-0-20150806181038-454(未知)()(无)--上行-机动车-001-full-1_WrongCL.jpg

      0000098303-1-0-20150806181102-792(蓝色)(京MZS823)(灰色)-轿车-上行-机动车-001-full-1_WrongCH.jpg

      0000098309-1-0-20150806181110-115(蓝色)(京P32D96)(灰色)-轿车-上行-机动车-001-full-1_WrongEN.jpg

       ...........................................

       要求将该目录上的这些图片分类存储,分别存到以WrongCL、WrongCH、WrongEN为名字的文件夹中。


实现:

1)遍历当前文件夹中文件

        2)用正则表达式去

     

           DirectoryInfo TheFolder = new DirectoryInfo(fullPath); //fullPath是要遍历的文件目录,即源目录

            //定义模式字符串,用于后面的文件名匹配。因为我要以图片文件中的这些字符作为文件名,所以将其存储到一个字符串中
            string[] Pattern = new string[] { "invalid", "WrongCH", "WrongEN" , "WrongNU", "WrongNPD", "WrongCL"};  //无效,汉字错,字符错,数字错,定位错,不识别

            MatchCollection Matches = null;
            string str = null;  //存储的文件名

            for (int i = 0; i < Pattern.Length; i++)
            {
                foreach (FileInfo NextFile in TheFolder.GetFiles())
                {

                    Matches = Regex.Matches( NextFile.Name,
                                             Pattern[i],
                                             RegexOptions.ExplicitCapture |   //提高检索效率
                                             RegexOptions.RightToLeft          //从右向左匹配字符串
                                           );

                    if (Regex.IsMatch(NextFile.Name, Pattern[i])) //如果当前文件名字中包含模式字符
                    {


                        str = Pattern[i];  //以此创建文件夹名

                        string destPath = fullPath + "\\" + str + "\\";   //得到目标路径

                        //判断目标目录是否存在,如果不存在则新建
                        if (!Directory.Exists(destPath))
                            Directory.CreateDirectory(destPath);


                        //判断拷贝的文件是否在目标目录中存在,如果存在,则先删除,再拷贝 
                        if (File.Exists(Path.Combine(destPath, NextFile.Name)))
                        {
                            File.Delete(Path.Combine(destPath, NextFile.Name));
                        }


                        NextFile.CopyTo(Path.Combine(destPath, NextFile.Name)); //将该文件拷贝到目标目录中

                    }
                }
            }

你可能感兴趣的:(编程语言)