GEt唯一的文件名而不是整个路径
问题描述:
我正在项目中获取选定驱动器中的所有文本文件。事情是我得到的所有文本文件的名称与路径,但我需要的是名称。我甚至不想得到扩展名,我想要的只是该文本文件的名称。我在互联网上搜索了所有内容,但找不到正确的答案。我将所有这些名称存储在列表框中。这里是我的代码:不是全路径和扩展GEt唯一的文件名而不是整个路径
String[] dir1 = System.IO.Directory.GetDirectories(@"F:\");
for (int i = 0; i < dir1.Length; i++)
{
FileAttributes attributes = File.GetAttributes(dir1[i]);
if ((attributes & FileAttributes.Hidden) != fileAttributes.Hidden)
{
string folder = @""+ dir1[i];
txtfiles = Directory.GetFiles(folder, "*.txt");
listBox1.Items.AddRange(txtfiles);
}
}
我怎样才能得到的只有名字,?
答
Path.GetFileNameWithoutExtension
方法将为您做到这一点。
https://msdn.microsoft.com/en-us/library/system.io.path.getfilenamewithoutextension(v=vs.110).aspx
返回不带扩展名的指定路径字符串的文件名。
将GetFiles的结果传递给方法,它应该返回你需要的。
答
您需要使用Path.GetFileName
方法,这将仅仅只从路径返回提取的文件名,所以你可以做的是投影txtfiles
获取集合的只是文件名,如:
listBox1.Items.AddRange(txtfiles.Select(file=>Path.GetFileName(file));
,如果你只需要路径,而不是实际读它们,你可以使用EnumerateFiles
方法,这将是在内存性能更好的具体做法是:
listBox1.Items.AddRange(txtDirectory.EnumerateFiles(folder, "*.txt")
.Select(file=>Path.GetFileName(file))
);
此外,如果你只需要文件的名称,没有扩展名,那么你可以d o建议使用Valuator answer。
答
看看System.IO.Path.GetFileNameWithoutExtension()
你可以做类似
txtfiles = Directory.GetFiles(folder, "*.txt");
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList();
'我已经找遍了所有在internet'似乎不太可能。将您的标题+“c#”提供给Google返回290万次点击 – Plutonix