【问题标题】:How to copy only the files from a directory that match the file names in a .csv [duplicate]如何仅从与.csv中的文件名匹配的目录中复制文件[重复]
【发布时间】:2021-10-01 11:01:59
【问题描述】:

我有一个包含文件名的 .csv 文件,我需要在一个目录中找到与 .csv 中的文件名匹配的文件并将它们复制到另一个目录。

我不知道该怎么做?

.csv 文件包含:

11420511800.png
11455010100.png
11455010120.png
11455010140.png
11455010150.png
11455010200.png
11455010250.png

【问题讨论】:

  • 您尝试了哪些方法,哪些方法不适合您?还有什么你不知道如何实现?如何打开文件?如何读取 csv?如何移动文件?
  • @Guru Stron,我在 .csv 文件中获得了文件名,但我不知道如何将文件名与目录中的文件名匹配,以及是否匹配复制所有文件新目录中的文件。
  • @Heretic Monkey,有点帮助。
  • 我建议为初学者研究this 方法。
  • @GuruStron 我会调查的,我需要。这对我来说很紧急,没有时间学习,测试。

标签: c# csv file directory copy


【解决方案1】:

Directory.GetFiles(@"c:\MyDir\")

该命令为您获取目录中的所有文件(作为列表)。

您可以遍历该列表并将其与 .csv 文件中的名称进行比较(如果您也将它们放在列表 [或类似的东西] 中)。

【讨论】:

    【解决方案2】:
    var allowedFiles = File.ReadAllLines(@"X:\your-csv-path-goes-here.csv");
    var filesToCopy = new DirectoryInfo(@"Y:\your-source-directory").GetFiles()
                     .Where(f => allowedFiles.Any(af => f.Name.Equals(af, StringComparison.OrdinalIgnoreCase)));
    foreach (var fileInfo in filesToCopy) {
       var destFilePath = Path.Combine("Z:\your-destination-directory", fileInfo.Name);
       fileInfo.CopyTo(destFilePath, true); //true => overwrite existing files
    }
    

    【讨论】:

    • 这是我需要的,但我得到一个 IO 异常:“System.IO.IOException 未处理 HResult=5 消息=目标文件“C:\Users\touda\OneDrive\Shopia\Proiecte\ PRB Shop SRL\Fisiere produse\Imagini produse\img site”是目录,不是文件。”
    • StringComparison.OrdinalIgnoreCase如果代码在 Linux 上运行会怎样?
    • @DanileTou 感谢反馈,我没有测试它。因此,您需要指定完整的目标文件路径,而不仅仅是目录。我已经编辑了我的帖子
    猜你喜欢
    • 2020-04-07
    • 2021-10-16
    • 2016-10-21
    • 2020-10-17
    • 2022-08-17
    • 1970-01-01
    • 2021-03-19
    • 2018-01-10
    • 1970-01-01
    相关资源
    最近更新 更多