这是我的代码:
Sub DataLoad()
Dim DirList As New ArrayList
GetDirectories("C:\Surf\Oversigt\", DirList)
For Each item In DirList
ListBox4.Items.Add(item)
Next
End Sub
Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList)
Dim Dirs() As String = Directory.GetDirectories(StartPath)
DirectoryList.AddRange(Dirs)
For Each Dir As String In Dirs
GetDirectories(Dir, DirectoryList)
Next
End Sub
我只想显示listbox4中目录的名称,而不是目录的整个路径。现在它会显示如下:
C:\ Surf \ Oversigt \ Foldername等。
请帮忙
答案 0 :(得分:1)
您可以更改
行 DirectoryList.AddRange(Dirs)
这一行
DirectoryList.AddRange(Dirs.Select(Function (x) Path.GetFileName(x)).ToArray())
这将以一种不直观的方式使用Path.GetFileName,但如果您调用GetFileName传递完整路径名,则获取最后一个文件夹名称。
但是我对你的代码有疑问。这段代码是递归的,并且剥离完整路径,你怎么能识别两个具有相同名称但在不同子文件夹中的文件夹?
例如,假设你有一个
C:\Surf\Oversigt\MyFolder
C:\Surf\Oversigt\temp\MyFolder
您将使用
结束列表框MyFolder
MyFolder
答案 1 :(得分:0)
行后
Dim Dirs() As String = Directory.GetDirectories(StartPath)
只需替换
行DirectoryList.AddRange(Dirs)
与
For Each Dir As String In Dirs
DirectoryList.Add(Dir.Substring(Dir.LastIndexOf("\") + 1))
Next