使用 .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)) {
...
}
我正在尝试读取文件夹并查看文件名。使用此代码:
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)) {
...
}