我正在尝试获取有关所选文件的信息,并在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));
}
}
}
答案 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"]));