需要更新c#中的图像文件
本文关键字:图像 文件 更新 | 更新日期: 2023-09-27 18:24:09
-
我在一个大文件夹中有800-1000个唯一命名的文件夹。
-
每个唯一命名的文件夹中都有另一个名为/images的文件夹。
-
每个图像文件夹中都有一个名为"Rock Star Site Design"的文件-{UNIQUEFOLDERNAME}-ca-logo.png"
-
我写了一个代码来替换我提供的.png文件中的所有.png文件(同时保留原始名称)。
文件夹结构和文件名需要保持不变。基本上,我用一个新文件更新旧文件,使用相同的(唯一的)名称,800-1000次。
我试着让代码正常工作,但有一个错误。Image文件夹里有很多图片,但我只需要更新"Rock Star网站设计"-{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;
}
您可以使用它来获取基于正则表达式的文件
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);
}
}
编辑
如果你想用大写和小写lette更新文件,那么你必须将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))