Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要在c中更新图像文件#_C#_Asp.net_Vb.net_C# 4.0 - Fatal编程技术网

C# 需要在c中更新图像文件#

C# 需要在c中更新图像文件#,c#,asp.net,vb.net,c#-4.0,C#,Asp.net,Vb.net,C# 4.0,我在一个大文件夹中有800-1000个唯一命名的文件夹 在每个唯一命名的文件夹中,还有一个名为/images的文件夹 每个图像文件夹中都有一个名为“摇滚明星网站设计-{UNIQUEFOLDERNAME}-ca logo.png”的文件 我编写了一个代码来替换我提供的.png文件中的所有.png文件(同时保留原始名称) 文件夹结构和文件名需要保持不变。基本上,我用一个新文件更新旧文件,使用相同的(唯一的)名称,800-1000次 我尝试过的代码工作正常,但有一个错误。图像文件夹中有大量图像,但我只

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

  • 在每个唯一命名的文件夹中,还有一个名为/images的文件夹

  • 每个图像文件夹中都有一个名为“摇滚明星网站设计-{UNIQUEFOLDERNAME}-ca logo.png”的文件

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

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

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

    有什么方法可以让我获得文件.startwith(“摇滚明星”)。这样我可以更新我想要的特定文件

    这是我的密码:

    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;
    }
    
    私有列表目录搜索(字符串sDir)
    {
    列表文件=新列表();
    尝试
    {
    foreach(Directory.GetFiles(sDir)中的字符串f)
    {
    添加(f);
    }
    foreach(Directory.GetDirectories(sDir)中的字符串d)
    {
    AddRange(DirSearch(d));
    }
    foreach(文件中的var文件)
    {
    如果(!string.IsNullOrWhiteSpace(文件))
    {
    Copy(Server.MapPath(“ca logo.jpg”),File,true);
    }
    }
    }
    捕获(系统异常excpt)
    {
    //MessageBox.Show(除消息外);
    }
    归还文件;
    }
    
    您可以使用它来获取基于正则表达式的文件

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

    Rock Star*.png表示以Rock Star开头的文件,*表示以.png结尾的任何字符或字符序列。您可以使用它来获取基于正则表达式的文件

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

    Rock Star*.png表示以Rock Star开头的文件,*表示以.png结尾的任何字符或字符序列。首先使用
    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);
          }
    
    }
    
    编辑

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

    foreach (string f in Directory.GetFiles(sDir, "*.png", SearchOption.AllDirectories))
    

    首先使用
    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);
          }
    
    }
    
    编辑

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

    foreach (string f in Directory.GetFiles(sDir, "*.png", SearchOption.AllDirectories))
    

    我有两张像rock star和rock star的图片…但是我想更新rock star…所以我应该做什么来区分大小写…同样的代码应该可以工作,上面的代码只会更新文件的大写名称“rock-Start”。它不会取代“摇滚明星”你说的对。同样的代码正在工作…现在我又遇到了一个问题…我有这样的文件夹结构:mainfolder>subfolder在这个子文件夹中有3个文件夹。1)css2)images3)php…通过使用这段代码,我只得到了css文件夹,但我想访问images文件夹。。。foreach(Directory.GetDirectories(sDir)中的字符串d){files.AddRange(DirSearch(d));}你说得对。同样的代码正在运行…现在我又遇到了一个问题。我有这样的文件夹结构:mainfolder>subfolder在这个子文件夹中有3个文件夹。1)css2)images3)php…通过使用此代码,我只得到了css文件夹,但我想访问images文件夹。。。foreach(Directory.GetDirectories(sDir)中的字符串d){files.AddRange(DirSearch(d));}我有两张像rock star和rock star…但是我想更新rock star…所以我应该如何区分大小写…同样的代码应该可以工作,上面的代码只更新大写名为“rock-Start”的文件。它不会取代“摇滚明星”你说的对。同样的代码正在工作…现在我又遇到了一个问题…我有这样的文件夹结构:mainfolder>subfolder在这个子文件夹中有3个文件夹。1)css2)images3)php…通过使用这段代码,我只得到了css文件夹,但我想访问images文件夹。。。foreach(Directory.GetDirectories(sDir)中的字符串d){files.AddRange(DirSearch(d));}你说得对。同样的代码正在运行…现在我又遇到了一个问题。我有这样的文件夹结构:mainfolder>subfolder在这个子文件夹中有3个文件夹。1)css2)images3)php…通过使用此代码,我只得到了css文件夹,但我想访问images文件夹。。。foreach(Directory.GetDirectories(sDir)中的字符串d){files.AddRange(DirSearch(d));}