【问题标题】:How to add multiple files using Directory.GetFiles() in C#?如何在 C# 中使用 Directory.GetFiles() 添加多个文件?
【发布时间】:2019-07-04 23:45:05
【问题描述】:

这个问题之前可能已经被问过,但是我无法在单个循环中传递我的方法所需的三个参数。我喜欢该目录中的数千个文件(xml、jpg、tiff)(混合)。

这是我想要得到的东西。

protected void btn_Click(object sender, EventArgs e)
        {
            var path = @"d:\xmlfiles";
            foreach (var file in Directory.GetFiles(path))
            {
                ProcessFile(file,param2,param3);
            }

        }

    static void ProcessFile(string file_xml, string file_jpg, string file_tiff)
        {
            // do processing here...
            //Adding data to sql
        }

我试过Path.GetExtension,但它只提供扩展名。我必须传递文件名,逻辑在方法Processfile()中。

我看到之前提出的许多问题只返回单个文件。 有没有其他解决方法?

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您必须添加一个具有预期输出的示例目录列表(2-3 个文件就足够了)。
  • 我不明白这些参数应该是什么。您只是想处理扩展名为 xml、gif 和 jpeg 的文件吗?
  • 您应该澄清您期望这些不同文件之间的共同点吗?例如,您是否有: - file1.xml - file1.jpg - file1.tiff 或不一定?
  • @Steve 是的。例如。 1.xml、1.jpg、1.tiff
  • @Fabio M。对不起,我忘了添加期望。

标签: c# asp.net


【解决方案1】:

所以你有一个包含如下文件的目录:

  • Foo.xml, Foo.jpg, Foo.tiff
  • Bar.xml, Bar.jpg, Bar.tiff
  • Baz.xml, Baz.jpg, Baz.tiff

并且您想一起处理同名文件。那么为什么不选择并枚举一个扩展名,并重构随附的文件名:

foreach (var xmlFile in Directory.GetFiles(path, "*.xml"))
{
    var extensionLess = Path.GetFilenameWithoutExtension(xmlFile);

    var jpgFile = Path.Combine(path, extensionLess + ".jpg");
    var tiffFile = Path.Combine(path, extensionLess + ".tiff");

    ProcessFile(xmlFile, jpgFile, tiffFile);
}

【讨论】:

  • 应该对xml 文件做同样的处理,这样它就没有完整的路径。我猜他想要 3 个文件的格式相同。
  • @CodeCaster 感谢您的大力帮助!而且我不知道“GetFilenameWithoutExtension”,我只尝试了我从其他问题中知道的 GetFiles()。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 2019-03-10
  • 2011-12-04
  • 2023-02-25
相关资源
最近更新 更多