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

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)


当前回答

Path.GetFileNameWithoutExtension(file);

这只返回不包含扩展名类型的文件名。您还可以更改它,以便同时获得文件的名称和类型

 Path.GetFileName(FileName);

来源:https://msdn.microsoft.com/en-us/library/system.io.path (v = vs.110) . aspx

其他回答

你可以在FileInfo上创建一个扩展方法:

public static partial class Extensions
{
    public static string NameWithoutExtension(this FileInfo fi) => Path.GetFileNameWithoutExtension(fi.Name);
}

回答最初的问题:

new DirectoryInfo(dirPath).EnumerateFiles().Select(file => file.NameWithoutExtension());

假设你想获取所有具有特定名称的文件:

new DirectoryInfo(dirPath).EnumerateFiles().Where(file => file.NameWithoutExtension() == fileName).FullName;

您可以使用Path。GetFileNameWithoutExtension:

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

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

郑重声明:

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。我在另一个答案里看到的名字。

下面是我的代码,以获得图片加载到一个PictureBox和显示一个图片名称在一个文本框没有扩展。

private void browse_btn_Click(object sender, EventArgs e)
    {
        OpenFileDialog Open = new OpenFileDialog();
        Open.Filter = "image files|*.jpg;*.png;*.gif;*.icon;.*;";
        if (Open.ShowDialog() == DialogResult.OK)
        {
            imageLocation = Open.FileName.ToString();
            string picTureName = null;
            picTureName = Path.ChangeExtension(Path.GetFileName(imageLocation), null);

            pictureBox_Gift.ImageLocation = imageLocation;
            GiftName_txt.Text = picTureName.ToString();
            Savebtn.Enabled = true;
        }
    }

使用Path.GetFileNameWithoutExtension()。