【问题标题】:C# not reading files properly when using .Path class使用 .Path 类时 C# 无法正确读取文件
【发布时间】:2021-12-04 05:54:46
【问题描述】:

我正在尝试读取一个文件夹并查看文件名。使用此代码:

  try
  {
    var folderPath = @"C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\";

    foreach (string file in Directory.EnumerateFiles(Path.GetFileName(folderPath)))
     {
       var ha = file;
     }
    }
    catch (Exception ex)
     {
       Console.WriteLine(ex);
       Console.ReadLine();
     }

很遗憾,我收到以下错误:

路径不合法

我的原始文件路径:

var folderPath = @"C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\";

为了找到坏字符,我写了这段代码:

string illegal = @"C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\";
string invalid = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());

foreach (char c in invalid)
{
  illegal = illegal.Replace(c.ToString(), "");
}

返回:

“CUsersGamersourcereposcarValLocalcarValLocalfiles”

这显然不是文件名。

如果我不使用 Path 类,它仍然会找到文件。我怎样才能使它工作,因为我尝试过的一切(比如删除非法字符)都不起作用。

【问题讨论】:

  • 我想文件是一个目录。因此,从末尾删除 \ 字符以及 Path.GetFileName(folderPath)。如果要枚举文件夹路径中的文件,请使用Directory.EnumerateFiles(folderPath)
  • 调试第一步:Path.GetFileName(folderPath) 实际返回了什么? - 不是“该文件夹中的所有文件”

标签: c# .net directory


【解决方案1】:

好吧,对于给定的文件夹路径

var folderPath = @"C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\";

现有调用

Path.GetFileName(folderPath);

返回空字符串:"" since

C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\
\                                                        /|
 --------------------- directory ------------------------ file

如果您想在C:\Users\Gamer\source\repos\carValLocal\carValLocal\files 中查找文件,您可以 使用Path.GetDirectoryName:

foreach (string file in Directory.EnumerateFiles(Path.GetDirectoryName(folderPath)))
{
    ...
}

如果您想要某种路径操作,请尝试DirectoryInfo,例如让我们看看文件在

  C:\Users\Gamer\source\repos\carValLocal\carValLocal

代码:

  var folderPath = @"C:\Users\Gamer\source\repos\carValLocal\carValLocal\files\";

  DirectoryInfo di = new DirectoryInfo(folderPath);

  foreach (string file in Directory.EnumerateFiles(di.Parent.FullName)) {
    ...
  }

【讨论】:

  • Directory.GetFiles也可以用
猜你喜欢
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多