当获取某个文件夹中的文件名时:

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)


当前回答

试试这个,

string FileNameAndExtension =  "bılah bılah.pdf";
string FileName = FileNameAndExtension.Split('.')[0];

其他回答

郑重声明:

DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
string fileNames = String.Join(", ", smFiles.Select<FileInfo, string>(fi => Path.GetFileNameWithoutExtension(fi.FullName)));

这样你不用StringBuilder而是用String.Join()。另外,请注意path . getfilenamewithoutextension()需要一个完整的路径(fi. fullname),而不是fi。我在另一个答案里看到的名字。

您可以使用Path。GetFileNameWithoutExtension:

foreach (FileInfo fi in smFiles)
{
    builder.Append(Path.GetFileNameWithoutExtension(fi.Name));
    builder.Append(", ");
}

虽然我很惊讶没有办法直接从FileInfo(或者至少我看不到它)得到这个。

使用Path似乎很麻烦。GetFileNameWithoutExtension在你已经有一个FileInfo对象的情况下。

你可以利用FileInfo这个事实。扩展是FileInfo的一部分。Name做一个简单的字符串操作,只需删除字符串的末尾:

DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
    var name = fileInfo.Name.Remove(fileInfo.Name.Length - fileInfo.Extension.Length);
    builder.Append(name);
    builder.Append(", ");
    ...
}

使用Path.GetFileNameWithoutExtension()。

FileInfo知道它自己的扩展名,所以你可以删除它

fileInfo.Name.Replace(fileInfo.Extension, "");
fileInfo.FullName.Replace(fileInfo.Extension, "");

或者如果你偏执地认为它可能出现在中间,或者想要进行微优化:

file.Name.Substring(0, file.Name.Length - file.Extension.Length)