如何在下拉列表中显示文件夹名称和所有子文件夹名称

本文关键字:文件夹 显示文件 下拉列表 显示 | 更新日期: 2023-09-27 18:36:54

我有代码来查找和显示根文件夹中所有文件夹的名称:

private string[] GetFolderNames(string virtualDirPath)
{
    string[] Directories;
    if (Directory.Exists(virtualDirPath))
    {
        Directories = Directory.GetDirectories(virtualDirPath);
        for (int i = 0; i < Directories.Length; i++)
        {
            Directories[i] = MapUrl(Directories[i]);//map path to the folder
        }
        return Directories;
    }
    else
    {
        return null;
    }
}

并将代码将数据绑定到下拉列表:

string[] folders = GetFolderNames(RootPath);
if (folders != null)
{
     dropDownListFolders.DataSource = folders;
     dropDownListFolders.DataBind();
}
else
{
     dropDownListFolders.Items.Insert(0, "No folders available..");
}

如上面的代码,下拉列表显示Rootfolder中的所有文件夹名称,路径= virtualDirPath ;

但是我想知道是否在每个子文件夹中仍然有一些子文件夹,

并且在每个子文件夹中都有更多的子文件夹等等,以便我如何获取该子文件夹的所有名称。

尝试在第一个中制作更多for循环,但这真的让我一团糟。这似乎不是好方法。

我需要下拉列表显示所有子文件夹名称,sudfolder的子文件夹和子文件夹的子文件夹...在根文件夹中。帮助!我需要你的意见来找到更好的方法。

如何在下拉列表中显示文件夹名称和所有子文件夹名称

List<string> dirList = new List<string>();
DirectoryInfo[] dir = new DirectoryInfo(@"D:'Path").GetDirectories("*.*", SearchOption.AllDirectories);
foreach(DirectoryInfo d in dir) 
{
    dirList.Add(d.Name);
}
for (int i = 0; i < dirList.Count; i++) 
{
    Console.WriteLine(dirList[i]);
}

试试这个,并在dirList中获取所有文件夹名称并将其添加到下拉列表中。

如果使用 inbuild Directory.EnumerateDirectory 方法会更容易。http://msdn.microsoft.com/de-de/library/vstudio/dd383462(v=vs.110).aspx

你只是这样称呼它:

Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories);

这将为您提供所有目录 ("*") 及其完整路径的 IEnumerable。枚举 SearchOption.AllDirectory 表示您希望搜索是递归的。根路径是您的起点。

此外,您可以通过扩展第二个参数来过滤此方法,如下所示:

Directory.EnumerateDirectories("rootpath", "test*", SearchOption.AllDirectories);

这将导致所有目录的 IEnumerable 以 test 开头("test*")

编辑:

应考虑显示相对路径,而不是仅显示可能导致重复列表条目的名称。

var directories = (from x in Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories)
                    select x.SubString("rootpath".Length)).ToList();

使用以下方法获取所有文件夹的列表:

 public void traverse(File file, List<String> dirList) {
    // Print the name of the entry
    System.out.println(file);

    // Check if it is a directory
    if (file.isDirectory()) {
        System.out.println(file);
        //add directory name in the list
        dirList.add(file.getName());
        // Get a list of all the entries in the directory
        String entries[] = file.list();
        // Ensure that the list is not null
        if (entries != null) {
            // Loop over all the entries
            for (String entry : entries) {
                // Recursive call to traverse
                traverse(new File(file, entry),dirList);
            }
        }
    }
}

获得目录和子目录列表后,将其与下拉列表绑定。使用以下代码调用此方法

 DirectoryList directoryList = new DirectoryList();
    //output pram
    ArrayList<String> dirList = new ArrayList<String>();
    directoryList.traverse(new File("D:''Workspace''Netbeans''addapp"), dirList);