使用新文件更新文件
本文关键字:文件 更新 新文件 | 更新日期: 2023-09-27 18:23:57
-
我在一个大文件夹中有1000个唯一命名的文件夹。
-
在每个唯一命名的文件夹中,都有另一个名为/images的文件夹。
-
在每个图像文件夹中都有一个名为
"Read-Web-Site-Design-{UNIQUEFOLDERNAME}-ca-logo.png"
的文件 -
我想从我提供的
.png
文件中替换1768个.png
文件(同时保留原始名称)。
文件夹结构和文件名需要保持不变。基本上,我用一个新文件更新旧文件,使用相同的(唯一的)名称,更新1000次。
我已经写了这个代码,我可以在循环中获得所有的文件和目录,但我想知道我将如何更新这里的文件,请检查我的代码:
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));
}
}
catch (System.Exception excpt)
{
//MessageBox.Show(excpt.Message);
}
return files;
}
只需执行File.Copy()
,就可以用您提供的新.png文件替换旧文件。
假设您将拥有列表中要替换的所有文件,
List<String> files = new List<String>();
foreach (var file in files)
{
if (!string.IsNullOrWhiteSpace(file))
{
File.Copy("New File Path", "file to be replaced", true);
}
}
请参阅,您正在传递true
作为Copy()方法的第三个参数,如果目标路径中已经有文件,则该参数将被覆盖。
也可以使用File.Replace()
。在这里,您可以保留原始文件作为备份。
File.Replace("New File", "File to be replaced", "Back up of Original File");
您可能希望考虑以下内容,它将为您处理递归,只在文件路径中找到具有"读取网站"的png文件
foreach(var file in Directory.EnumerateFiles(dir, "*.png", SearchOption.AllDirectories)
.Where(x => x.Contains("Read-Web-Site")))
{
File.Copy(file, Path.Combine(new FileInfo(file).DirectoryName,"newName.png"), true);
}
如果它是另一个文件,你想覆盖到这个文件,那么它是相同的,但
File.Copy("newFile", file, true);
编辑
甚至更好的
foreach(var file in Directory.EnumerateFiles(dir,
"Read-Web-Site*.png",
SearchOption.AllDirectories))