C# 获取路径中所有文件的名称

C# 获取路径中所有文件的名称,c#,C#,我收到一个错误访问路径。。。尝试从指定路径读取文件时被拒绝。演示错误的代码如下所示: string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests"; StreamReader sr = new StreamReader(path); while(!sr.EndOfStream) { string s = Path.GetFileNameWithoutExtension(path); listBox1.Items.Add(s);

我收到一个错误访问路径。。。尝试从指定路径读取文件时被拒绝。演示错误的代码如下所示:

string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests";
StreamReader sr = new StreamReader(path);
while(!sr.EndOfStream)
{
    string s = Path.GetFileNameWithoutExtension(path);
    listBox1.Items.Add(s);
}
sr.Close();
发生错误的代码到底有什么问题?如何实现目标?

用于获取目录中的所有文件,然后将每个文件路径投影到文件名:

var names = Directory.EnumerateFiles(path)
                     .Select(f => Path.GetFileNameWithoutExtension(f));
甚至更短的方式:

Directory.EnumerateFiles(path).Select(Path.GetFileNameWithoutExtension);
用于获取目录中的所有文件,然后将每个文件路径投影到文件名:

var names = Directory.EnumerateFiles(path)
                     .Select(f => Path.GetFileNameWithoutExtension(f));
甚至更短的方式:

Directory.EnumerateFiles(path).Select(Path.GetFileNameWithoutExtension);

不幸的是,您使用的语法不正确
StreamReader
将读取文件,但不会检索文件。您应该使用
System.IO
中的
目录
功能

例如:

这将实际检索文件数据

第二个例子:

 var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 var file = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
      .Select(Path.GetFileName);

Microsoft开发者网络上有一些很棒的文章,介绍了从系统中检索文件或目录的不同方法。

不幸的是,您使用的语法不正确
StreamReader
将读取文件,但不会检索文件。您应该使用
System.IO
中的
目录
功能

例如:

这将实际检索文件数据

第二个例子:

 var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 var file = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
      .Select(Path.GetFileName);
Microsoft Developer Network提供了一些很棒的文章,介绍了从系统中检索文件或目录的不同方法。

您可以使用它的方法
GetFiles(String)(+2重载)
枚举和处理旧版本.NET Framework上的文件

string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests";
string[] fileNames = Directory.GetFiles(path);
for(int i  = 0; i < fileNames.Length; i++)
{
    string fileName = Path.GetFileNameWithoutExtension(path + "\\" + fileNames[i]);
    listBox1.Items.Add(fileName);
}
string path=“D:\\Study\\ПППСа4аСССа\\КСаСа\\tests”;
string[]fileNames=Directory.GetFiles(路径);
for(int i=0;i
您可以使用它的方法
GetFiles(String)(+2重载)
枚举和处理旧版本.NET Framework上的文件

string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests";
string[] fileNames = Directory.GetFiles(path);
for(int i  = 0; i < fileNames.Length; i++)
{
    string fileName = Path.GetFileNameWithoutExtension(path + "\\" + fileNames[i]);
    listBox1.Items.Add(fileName);
}
string path=“D:\\Study\\ПППСа4аСССа\\КСаСа\\tests”;
string[]fileNames=Directory.GetFiles(路径);
for(int i=0;i
您打开了一个流,但从未使用它…?您试图打开一个流到文件夹,而不是文件。您打开了一个流,但从未使用它…?您试图打开一个流到文件夹,而不是文件。这要求.NET v4或更高版本使用
目录。EnumerateFiles
@BrianOliver是的,它是-这是一种新方法,它枚举文件名而不将其放入数组。NETV4是从2010年开始出现的,所以我认为这不是一个问题;我之前在那些棕色地带项目上被烧掉过,这些项目由于任何原因都无法升级,并且仍在旧版本上运行。这要求.NET v4或更高版本使用
目录。EnumerateFiles
@BrianOliver是的,它是-这是一种新方法,它枚举文件名而不将其放入数组。NETV4是从2010年开始出现的,所以我认为这不是一个问题;我以前在那些棕色地带的项目上被烧掉过,这些项目无论出于什么原因都无法升级,并且仍然在旧版本上运行。