当前位置: 首页 > 知识库问答 >
问题:

更新特定目录中的图像文件

西门高歌
2023-03-14

我有一些照片在一个文件夹里。图像可以很容易地从第一个文件夹转移到第二个文件夹。到目前为止,一切似乎都是ok的,但是如何将一个图像从第一个目录传递到第二个目录,这与已经存在于第二个文件夹中的图像是相同的呢?简单来说:如何更新或覆盖第二个文件夹中的文件?非常感谢您的帮助!

string pathName = @"C:\Users\Desktop\Images\Second\";                   

foreach (var file in Directory.EnumerateFiles(@"C:\Users\Desktop\Images\"))
{                           
   if (!Directory.Exists(pathName))
   {
     Directory.CreateDirectory(pathName);
   }

   string destFile = Path.Combine(pathName, Path.GetFileName(file));

   if (!File.Exists(destFile))
   {
       File.Move(file, destFile);
                                
   }

}





共有2个答案

岳浩穰
2023-03-14

更新:

我忘了,Move方法有第三个参数booloverwrite。你可以用它

 File.Move(file, destFile, true);

您将在这里找到更多信息

对于此任务,可以使用file.openreadfile.openwritestream.copyto方法

if (!File.Exists(destFile)) 
{
      File.Move(file, destFile);
}
else 
{
      using (var sourceStream = File.OpenRead(file))
      using (var desStream = File.OpenWrite(destFile))
            sourceStream.CopyTo(desStream);
}
颛孙成益
2023-03-14

move方法可以具有要重写第三个参数boolean

Move(String, String, Boolean)

将指定的文件移动到新位置,提供指定新文件名和覆盖目标文件(如果目标文件已存在)的选项。检查https://docs.microsoft.com/en-us/dotnet/api/system.io.file.move?view=net-5.0

或者,如果文件存在于destination中,则可以使用File.replace()保存已删除文件的备份。

public static void Replace (string sourceFileName, string destinationFileName, string? destinationBackupFileName);

会是这样的

string pathName = @"C:\Users\Desktop\Images\Second\";                   

foreach (var file in Directory.EnumerateFiles(@"C:\Users\Desktop\Images\"))
{                           
   if (!Directory.Exists(pathName))
   {
     Directory.CreateDirectory(pathName);
   }

   string destFile = Path.Combine(pathName, Path.GetFileName(file));
   string backupFile = 'Some place to backup the deleted image'.

   if (!File.Exists(destFile))
   {
       File.Move(file, destFile);                           
   }
   else
   {
       File.Replace(file, destFile, backupFile);
   }

}

可以查看https://docs.microsoft.com/en-us/dotnet/api/system.io.file.replace?view=net-5.0查看文档

 类似资料:
  • 问题内容: 因此,我一直在寻找一个高低的答案,显然找不到令人满意的答案。 问题是我想在JAR内更新JAR(或与此相关的任何文件),但是所说的文件在文件夹结构内,我想避免在JAR之外重现,以便我可以对其进行更新。 例: 因此,如果要使用 jar 命令更新此文件,则必须先在JAR外部创建相同的文件夹结构,然后再执行 但是,我想避免创建此文件夹结构,因为对于某些文件而言,它可能很深,而且因为我可能需要在

  • 问题内容: 以下代码将列出目录中的所有文件 尽管这是非常简单的代码,但可以完成工作。 我现在正在寻找一种仅列出结尾处带有.xml(或.XML)的文件的方法,该怎么办? 问题答案: 使用substr和strrpos查看扩展的简单方法

  • 在我的MongoDB中,我有文档,如下所示。如何更新内部文档结构中的文档:<code>〔{1},〔{2}〕,〔{3}〕、〔{4}〕</code>。 例如:子子文档中的子文档具有和以及 和

  • 查找特定记录并更新

  • 我从特定目录下的Stackoverflow使用通配符子域获取源代码 原始代码: 它可以正常工作,但上面的代码指向根目录。我希望所有子域都指向我的“公文包”目录中的目录,所以我尝试修改自己的代码 修改后(添加"/投资组合"): 但它给了我“500-内部服务器错误”。。。为什么?有人能纠正我的密码吗? 对我的英语表示感谢和歉意。

  • 我有一个简单的问题:我使用迭代一个大的、深嵌套的目录结构,如下所示: 我的目标是添加特定目录下的所有文件,我知道该目录最多是下的级别。 语言级别为Java8。