[英]How to display folder name and all sub folder name in dropdownlist
我有代碼來查找和顯示root文件夾中所有文件夾的名稱:
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..");
}
如上代碼所示,Dropdownlist在Rootfolder
顯示所有文件夾名稱,其中path = virtualDirPath
;
但是我想知道在每個子文件夾中是否仍然有一些子文件夾,並且在每個子文件夾中還有更多的子文件夾,等等等等,那么我如何獲得該子文件夾的所有名稱。
嘗試在第一個循環中添加更多for
循環,但這確實使我感到困惑。 看來這不是好方法。
我需要Dropdownlist在rootfolder中顯示所有子文件夾名稱,sudfolder的子代和child文件夾的子代...。 救命! 我需要您的意見以找到一種更好的方法。
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.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();
使用以下方法獲取所有文件夾的列表:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.