【问题标题】:GetFiles with spaces in filename文件名中带有空格的 GetFiles
【发布时间】:2015-02-04 13:25:33
【问题描述】:

我使用以下代码从目录中获取所有文件并搜索特定文件:

string [] fileEntries = Directory.GetFiles("C:\\uploads");
foreach(string fileName in fileEntries)
    if (fileName.Contains(name))
        PicturePath = fileName;

其中“name”是我从 DB 获得的字符串。

它似乎可以扩展,但如果我的文件在 fileName 中包含一个空格,它只会从 fileName 获取第一个字符串,它是空格之前的第一个字符串,忽略其余部分。我如何获取完整的文件名(以及相应文件的路径)。

例如:我在上传文件中有一个名为“ALEXANDRU ALINA.jpg”的文件,在名称中我有一个字符串“ALEXANDRU ALINA”。当我运行该代码(编写 PicturePath)时,它只显示“ALEXANDRU”。

【问题讨论】:

  • “它只需要第一个字符串”是什么意思?一个简短但完整的程序,包含示例输入、预期输出和实际输出,将使这更加更加清晰。
  • 编辑了我的问题。希望现在很清楚
  • 不是真的 - 我们不知道你是如何显示它的,或者类似的东西。 Directory.GetFiles()给出完整的文件名,包括空格...

标签: c# file-upload getfiles


【解决方案1】:

这可能是您正在寻找的:

string[] fileEntries = Directory.GetFiles("C:\\uploads");

foreach (string fileName in fileEntries)
{
    FileInfo fi = new FileInfo(fileName);
    if (fi.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase)) PicturePath = fileName;
}

您尝试做的是在整个路径中查找目标文件名,但您使用的方法可能会产生错误(如果name 包含在文件夹路径的一部分中怎么办?)。通过使用System.FileInfo 类及其Name 属性,这是仅文件名(不是包含文件夹路径的完整文件路径),您将无需搜索任何部分文件夹路径。

【讨论】:

  • 但是如果我想获取整个文件名(包括 .extensions)而不是路径。
  • @RaduStanescu -- Name 属性包含扩展名。
  • 我设法做到了,但如果你描述我使用 if (fi.Name.ToString().Contains(name)) PicturePath = fileName.它似乎运作良好。谢谢
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2013-06-22
  • 2011-07-18
相关资源
最近更新 更多