如何修复这个小的(可能很简单的)DirectoryInfo语法错误?

时间:2017-03-18 05:36:51

标签: c# system.io.directory

非常直接。按一个按钮,从对话框中选择一个路径,搜索路径的子目录,并在消息框中显示它们。但是遇到了几个问题。

private void InputButton_Click(object sender, RoutedEventArgs e)
{

    //CHECKS TO SEE IF "OK" WAS CLICKED IN DIALOGBOX
    if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {

    }

    //SELECTS DIRECTORY PATH
    Path.GetDirectoryName(fbd.SelectedPath);
    string path = Path.GetDirectoryName(fbd.SelectedPath);
    InputDirectory_Box.Text = path;

    //SELECTS SUBDIRECTORIES FROM PATH
    string[] subdirectories = DirectoryInfo.GetDirectories(path);
    for (int i = 0; subdirectories.Length+1 >= 0; i++)
    {
        MessageBox.Show(subdirectories[i]);
    }


}

string[] subdirectories = DirectoryInfo.GetDirectories(path);表示它需要非静态字段的对象引用。我已经声明path给它搜索字符串。我对Directory类(而不是DirectoryInfo类)使用了完全相同的代码和语法,这是合法的。但是,使用Directory.GetDirectories时出现问题。由于某种原因,它找到了路径的目录,而不是subdirectories

如果有人能说出一些亮点:
A - 为什么我收到此语法错误
B - 为什么它从路径中返回父目录而不是子目录

然后你会成为英雄。非常感谢

PS我对编程完全不熟悉,并且不知道枚举/枚举是什么,所以如果它与它有关,我会欣赏它可能是一个小例子或它的背景。< / p>

2 个答案:

答案 0 :(得分:1)

GetDirectories是一种实例方法。您需要有DirectoryInfo的实例才能使用它。

string path = fbd.SelectedPath;

// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(path);

// Get a reference to each directory in that directory.
string[] subdirectories = di.GetDirectories();

答案 1 :(得分:0)

静态类将为Directory

Directory.GetDirectories(path);

这两行中的第一行无用......

Path.GetDirectoryName(fbd.SelectedPath);
string path = Path.GetDirectoryName(fbd.SelectedPath);

接下来的事情:我不理解那个循环......你想用Length+1>=0做什么? 要打印出任何列表/数组的所有目录,您有两个选择:for循环,如果您不需要项目的索引,则更好一个foreach循环。

看看这些例子:

   string[] subdirectories = Directory.GetDirectories(path);
    for (int i = 0; i < subdirectories.Length; i++)
    {
        MessageBox.Show(subdirectories[i]);
    }

   string[] subdirectories = Directory.GetDirectories(path);
    foreach (string directory in subdirectories)
    {
        MessageBox.Show(directory);
    }

希望这会有所帮助。