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

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)


当前回答

该解决方案还防止添加尾随逗号。

var filenames = String.Join(
                    ", ",
                    Directory.GetFiles(@"c:\", "*.txt")
                       .Select(filename => 
                           Path.GetFileNameWithoutExtension(filename)));

我不喜欢这个场景中的DirectoryInfo和FileInfo。

DirectoryInfo和FileInfo收集的关于文件夹和文件的数据比需要的多,因此它们占用的时间和内存比需要的多。

其他回答

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

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

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

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

如果文件名中包含目录,您需要不丢失目录:

fileName.Remove(fileName.LastIndexOf("."))
using System;

using System.IO;

public class GetwithoutExtension
{

    public static void Main()
    {
        //D:Dir dhould exists in ur system
        DirectoryInfo dir1 = new DirectoryInfo(@"D:Dir");
        FileInfo [] files = dir1.GetFiles("*xls", SearchOption.AllDirectories);
        foreach (FileInfo f in files)
        {
            string filename = f.Name.ToString();
            filename= filename.Replace(".xls", "");
            Console.WriteLine(filename);
        }
        Console.ReadKey();

    }

}

使用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(", ");
    ...
}

下面是我的代码,以获得图片加载到一个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;
        }
    }