繁体   English   中英

如何获取多个变量中的多个文件的目录?

[英]How do I get directory of multiple files in multiple variables?

我想从同一目录中读取2个excel文件,并将其完整路径存储在两个不同的变量中。

例如,

C:\\Users\\User\\Desktop\\Folder\\File1.xlsx - First value
C:\\Users\\User\\Desktop\\Folder\\File2.xlsx - Second value

我正在为此一个string数组,但它不起作用。

请帮忙。

我已经完成以下工作:

string[] location = new string[2];
int i = 0;

OpenFileDialog openFileDialog1 = new OpenFileDialog();
this.openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";
this.openFileDialog1.Multiselect = true;
this.openFileDialog1.Title = "Select Excel Files";

DialogResult dr = this.openFileDialog1.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
    foreach (String file in openFileDialog1.FileNames)
    {
        location[i] = Path.GetDirectoryName(file);
        i++;
    }
}

我唯一看到的代码错误是,您正在创建OpenFileDialog的本地实例,然后尝试引用它,就像它是类成员字段一样。

OpenFileDialog openFileDialog1 = new OpenFileDialog();
this.openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";

摆脱this.

如果用户选择多个文件,则代码崩溃的风险很大。 我认为没有理由将“位置”的数组大小直接设置为两个。 我建议您检查Alex K的注释。对话框的.FileNames -property已经是一个数组。 然后获取目录,所有目录都将相同(如Crowcoder所写)。

我认为,最后您需要的是:

        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";
        openFileDialog1.Multiselect = true;
        openFileDialog1.Title = "Select Excel Files";

        DialogResult dr = openFileDialog1.ShowDialog();
        if (dr == System.Windows.Forms.DialogResult.OK)
        {
             string[] location = openFileDialog1.FileNames;
             // do something
        }

如果需要,请执行以下操作:

 string[] location = openFileDialog1.FileNames.Select(x => Path.GetDirectoryName(x)).ToArray()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM