0
  1. 我在一个大文件夹中有 800-1000 个唯一命名的文件夹。

  2. 在每个唯一命名的文件夹中都有另一个名为 /images 的文件夹。

  3. 每个图像文件夹中都有一个名为“Rock-Star-Site-Design-{UNIQUEFOLDERNAME}-ca-logo.png”的文件

  4. 我编写了一个代码,从我提供的 .png 文件中替换所有 .png 文件(同时保留原始名称)。

文件夹结构和文件名需要保持不变。基本上我用一个新文件更新旧文件,使用相同的(唯一的)名称,800-1000 次。

我试过的代码可以正常工作,但有一个错误。图像文件夹中有很多图像,但我只需要更新“Rock-Star-Site-Design-{UNIQUEFOLDERNAME}-ca-logo.png”文件每个文件夹.

有什么办法可以让我获得 file.startwith("Rock-Star")。所以我可以更新我想要的特定文件。

这是我的代码:

private List<String> DirSearch(string sDir)
{
    List<String> files = new List<String>();
    try
    {
        foreach (string f in Directory.GetFiles(sDir))
        {
            files.Add(f);



        }
        foreach (string d in Directory.GetDirectories(sDir))
        {
            files.AddRange(DirSearch(d));
        }


        foreach (var file in files)
        {
            if (!string.IsNullOrWhiteSpace(file))
            {
                File.Copy(Server.MapPath("ca-logo.jpg"), file,true);

            }
        }


    }
    catch (System.Exception excpt)
    {
        //MessageBox.Show(excpt.Message);
    }

    return files;
}
4

2 回答 2

4

您可以使用它来获取基于正则表达式的文件

Directory.GetFiles(sDir, "Rock-Star*.png");

Rock-Star*.png 表示以 Rock-Star 开头的文件,* 表示任何字符或字符序列,以 .png 结尾

于 2013-07-21T06:35:27.260 回答
0

首先使用 . 从文件完整路径中获取文件名Path.GetFileName()。然后使用StartsWith(). 当您将文件添加到列表时,请检查文件名是否以您想要的名称开头,然后添加到列表中。

List<String> files = new List<String>();
foreach (string f in Directory.GetFiles(""))
{
   //Get file name from full file path
   string fileName = Path.GetFileName(f);

   //Get only the files starts with Rock-Star
   if (fileName.StartsWith("Rock-Star"))
      {
          files.Add(f);
      }

}

编辑

如果你想用大写和小写字母更新文件,那么你必须将StringComparison.OrdinalIgnoreCase枚举传递给你的StartsWith()方法

  //Get only the files starts with Rock-Star or rock-start 
  if (fileName.StartsWith("Rock-Star",StringComparison.OrdinalIgnoreCase))
      {
         files.Add(f);
      }

编辑

要获取所有子目录中的文件并进行替换,请传递SearchOption.AllDirectories给 GetFiles() 方法。以下代码将在所有子目录中搜索带有.png扩展名的文件

foreach (string f in Directory.GetFiles(sDir, "*.png", SearchOption.AllDirectories))
于 2013-07-21T06:45:01.103 回答