如何显示有关SelectedFile的信息

时间:2013-08-13 20:32:57

标签: c# dictionary fileinfo

我正在尝试获取有关所选文件的信息,并在ListBox中列出其属性(例如名称和长度),但我无法弄清楚如何执行此操作。我写了这段代码,但它不符合我的期望。如何使用DictionaryList

执行此操作
private void button1_Click(object sender, EventArgs e)
{
    FileInfo fi = null;
    // Dictionary<string, int> info = new Dictionary<string, int>();
    openFileDialog1.Multiselect = true;
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {

        foreach (string file in openFileDialog1.FileNames)
        {
            listBox1.Items.Add(fi = new FileInfo(file));

        }
    }
}

1 个答案:

答案 0 :(得分:0)

尝试拉出FileInfo类的一些成员以显示在ListBox中。变化

listBox1.Items.Add(fi = new FileInfo(file));

var info = new FileInfo(file);
listBox1.Items.Add(String.Format("Filename: {0} Size: {1}", info.Name, info.Length));

至于使用词典,您可以在某处定义词典:

Dictionary<string,FileInfo> fileInfoDictionary = new Dictionary<string,FileInfo>();

然后将FileInfo对象添加到其中:

foreach (string file in openFileDialog1.FileNames)
{
    fileInfoDictionary[file] = new FileInfo(file);
}

然后稍后使用该信息(无需再次访问文件系统):

Console.WriteLine(fileInfoDictionary[@"c:\autoexec.bat"].Length);

如果它存在,那么右边的那一行会显示autoexec.bat的文件大小。如果没有,该行将抛出KeyNotFoundException

或者,如果您关心的只是文件大小,您可以在自己的帖子中声明您的字典:

Dictionary<string,int> fileSizeDict = new Dictionary<string,int>();
// ...
fileSizeDict[file] = new FileInfo(file).Length;
// ...
Console.WriteLine(String.Format("The length of autoexec.bat is {0}", fileSizeDict["@c:\autoexec.bat"]));