在添加到listBox之前删除文件扩展名c#

时间:2016-04-15 09:33:08

标签: c# winforms visual-studio

我目前正在创建一个记笔记应用程序。我试图在没有文件扩展名的情况下将项目添加到列表框中,我尝试了GetAllFilesWithoutExtensions,但没有运气。我目前能够添加它们,但似乎无法删除扩展程序。任何建议将不胜感激......

 DirectoryInfo dir = new DirectoryInfo("../Debug/");
 FileInfo[] files = dir.GetFiles("*.txt");

 foreach (FileInfo file in files)
 {
    listBox1.Items.Add(file);
 }

3 个答案:

答案 0 :(得分:7)

您可以使用LINQ和System.IO.Path.GetFileNameWithoutExtension

var fileNamesWithoutExtension = files
    .Select(fi => System.IO.Path.GetFileNameWithoutExtension(fi.Name));
foreach(string fn in fileNamesWithoutExtension)
{
    // ...
}

答案 1 :(得分:1)

您可以使用System.IO.Path.GetFileNameWithoutExtension(string)

请参阅MSDN

答案 2 :(得分:0)

创建一个类来帮助您:

class FInfo
{
    public FileInfo Info { get; set; }

    public FInfo (FileInfo fi)    { Info = fi; }

    public override string ToString()
    {
        return Path.GetFileNameWithoutExtension(Info.FullName);
    }
}

现在使用该类的实例填充ListBox

DirectoryInfo dir = new DirectoryInfo(yourPath);
FileInfo[] files = dir.GetFiles(yourFilter);

foreach (FileInfo file in files) listBox1.Items.Add(new FInfo(file));

现在您可以访问完整的FileInfo数据:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    FInfo fi = listBox1.SelectedItem as FInfo;
    if (fi != null) Console.WriteLine(fi.Info.FullName); // do your thing here!
}

ListBox将使用ToString方法仅显示没有路径或扩展名的文件名。