我有代码可以在根文件夹中查找并显示所有文件夹的名称:
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;
}
}
代码将数据绑定到Dropdownlist:
string[] folders = GetFolderNames(RootPath);
if (folders != null)
{
dropDownListFolders.DataSource = folders;
dropDownListFolders.DataBind();
}
else
{
dropDownListFolders.Items.Insert(0, "No folders available..");
}
如上面的代码所示,下拉列表显示Rootfolder
中所有文件夹名称,路径= virtualDirPath
;
但是我想知道在每个子文件夹中是否还有一些子文件夹,并且在每个子文件夹中都有更多的子文件夹等等,所以我怎样才能获得该子文件夹的所有名称。
尝试在第一个循环中制作更多for
循环,但它确实让我感到困惑。而且似乎这不是好方法。
我需要Dropdownlist在rootfolder中显示所有子文件夹名称,sudfolder的子项和子文件夹的子项。救命!我需要你的意见,找到一个更好的方法。
答案 0 :(得分:3)
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
中的所有文件夹名称并将其添加到下拉列表中。
答案 1 :(得分:1)
如果使用inbuild Directory.EnumerateDirectories方法,则更容易。 http://msdn.microsoft.com/de-de/library/vstudio/dd383462(v=vs.110).aspx
你只需这样称呼:
Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories);
这将为您提供所有目录(“*”)及其完整路径的IEnumerable。 枚举SearchOption.AllDirectories说你希望你的搜索是递归的。 根路径是你的起点。
另外,您可以通过扩展第二个参数来过滤此方法:
Directory.EnumerateDirectories("rootpath", "test*", SearchOption.AllDirectories);
这将导致以test(“test *”)
开头的所有目录的IEnumerable修改强>
您应该考虑显示相对路径,而不是仅显示可能导致重复列表条目的名称。
var directories = (from x in Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories)
select x.SubString("rootpath".Length)).ToList();
答案 2 :(得分:0)
使用以下方法获取所有文件夹的列表:
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);