C# 如何获取特定文件夹中每个文件的文件名?

C# 如何获取特定文件夹中每个文件的文件名?,c#,C#,我想列出存储在此目录中的所有文本文件名:“/Users/myname/TESTFOLDER”,但我只需要文件名,我不想在我的列表文件名列表中添加文件的完整路径 我的代码始终将文件的完整路径添加到列表中: List<string> Filenamelist = new List<string>(); userDir = "/Users/myname/TESTFOLDER"; var txtFiles = Directory.EnumerateF

我想列出存储在此目录中的所有文本文件名:
“/Users/myname/TESTFOLDER”
,但我只需要文件名,我不想在我的列表
文件名列表中添加文件的完整路径

我的代码始终将文件的完整路径添加到列表中:

     List<string> Filenamelist = new List<string>();
     userDir = "/Users/myname/TESTFOLDER";
     var txtFiles = Directory.EnumerateFiles(userDir, "*.txt");
     foreach (string currentFile in txtFiles)
     {
         Filenamelist.Add(currentFile);
     }
List Filenamelist=new List();
userDir=“/Users/myname/TESTFOLDER”;
var txtFiles=Directory.EnumerateFiles(userDir,“*.txt”);
foreach(txtFiles中的字符串currentFile)
{
Filenamelist.Add(当前文件);
}

如何仅将文件名添加到列表中?

您需要使用
Path.GetFileName
选择文件名,该函数返回指定路径字符串的文件名和扩展名,并存在于命名空间
System.IO
中。有关详细信息,您可以检查其。获取文件后,使用
EnumerateFiles
函数返回
IEnumerable
可以对其进行惰性评估,以获取更多信息,您可以查看其属性

如果要获取子目录文件,请将搜索选项设置为
SearchOption.AllDirectories
,因为默认值为
SearchOption.TopDirectoryOnly
,以查看更多信息

使用System.IO;
userDir=“/Users/myname/TESTFOLDER”;
List Filenamelist=Directory.EnumerateFiles(userDir,“*.txt”).Select(file=>Path.GetFileName(file)).ToList();

从何处获取文件列表?在将当前文件字符串加载到文件名列表中时,您不能从每个当前文件字符串中剪切userDir吗?@Jawad这只是一个输入错误。我将文件列表更改为txtFiles。@Steve感谢您的提醒,解决方案已经更新。如果您添加
.ToList()
,惰性就消失了。@Jimi.ToList()将在过滤和投影后解析整个语句,将其分配到最终列表,当我提到Lazly evaluation时,我正在谈论EnumerateFiles函数,我愿意接受您建议的任何增强。
.ToList()
会在分配之前使枚举具体化。因此,(假设的)好处是无声的。这不是一件坏事。如果您需要立即获得结果,那么您已经实现了集合。如果使用枚举器循环集合,则情况不同。这只是给可能的观察者的一个提示:不要期望这里有惰性(伪异步)枚举。@Jimi我完全同意你的观点,但我是根据问题代码语句这样做的,因为我没有代码的剩余部分,无法知道如何使用此列表或枚举
 using System.IO; 

    userDir = "/Users/myname/TESTFOLDER";
    List<string> Filenamelist = Directory.EnumerateFiles(userDir,"*.txt").Select(file => Path.GetFileName(file)).ToList();