1

我正在尝试获取有关所选文件的信息并在 a 中列出它们的属性(例如名称和长度)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));

        }
    }
}
4

1 回答 1

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"]));
于 2013-08-13T20:39:42.427 回答