使用 .Path class 时 C# 无法正确读取文件

C# not reading files properly when using .Path class

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

  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();
     }

不幸的是,我收到以下错误:

The path is not of a legal form

我原来的文件路径:

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 class,它仍然会找到文件。我怎样才能使它起作用,因为我尝试过的所有方法(例如删除非法字符)都不起作用。

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

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

现有通话

Path.GetFileName(folderPath);

returns 空字符串:"" 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)) {
    ...
  }