当获取某个文件夹中的文件名时:
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
builder.Append(fi.Name);
builder.Append(", ");
...
}
fi。Name给了我一个文件的扩展名:file1.txt, file2.txt, file3.txt。
如何获得没有扩展名的文件名?(file1, file2, file3)
作为额外的答案(或在现有答案的基础上进行复合),您可以在DirectoryInfo类中编写一个扩展方法来完成此任务。下面是我快速编写的一个示例,可以对其进行修饰,以提供目录名或其他修改标准等:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace DocumentDistributor.Library
{
public static class myExtensions
{
public static string[] GetFileNamesWithoutFileExtensions(this DirectoryInfo di)
{
FileInfo[] fi = di.GetFiles();
List<string> returnValue = new List<string>();
for (int i = 0; i < fi.Length; i++)
{
returnValue.Add(Path.GetFileNameWithoutExtension(fi[i].FullName));
}
return returnValue.ToArray<string>();
}
}
}
编辑:我还认为,如果使用LINQ来实现数组的构造,这种方法可能会被简化或令人惊叹,但我没有LINQ的经验来足够快地完成这种示例。
编辑2(大约4年后):以下是我将使用的linq化方法:
public static class myExtensions
{
public static IEnumerable<string> GetFileNamesWithoutExtensions(this DirectoryInfo di)
{
return di.GetFiles()
.Select(x => Path.GetFileNameWithoutExtension(x.FullName));
}
}
FileInfo知道它自己的扩展名,所以你可以删除它
fileInfo.Name.Replace(fileInfo.Extension, "");
fileInfo.FullName.Replace(fileInfo.Extension, "");
或者如果你偏执地认为它可能出现在中间,或者想要进行微优化:
file.Name.Substring(0, file.Name.Length - file.Extension.Length)