如何在下拉列表中显示文件夹名称和所有子文件夹名称
本文关键字:文件夹 显示文件 下拉列表 显示 | 更新日期: 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);