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

时间:2019-04-09 12:11:30

标签: c# .net

我想从同一目录中读取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++;
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

摆脱this.

答案 1 :(得分:0)

如果用户选择了多个文件,您的代码很容易崩溃。我认为没有理由将“位置”的数组大小直接设置为两个。 我建议您检查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()