Как получить подкаталоги в папке, не включая родительский каталог в указанной папке? - PullRequest
0 голосов
/ 02 декабря 2018

Я знаю, что IO.Directory.GetDirectories("X:/mydata/backup/stuff", "*", IO.SearchOption.AllDirectories) работает для получения всех каталогов, но мне нужно выяснить, как не привязывать родительскую половину к каждой строке.

Мне нужен вывод:

  • stuff/that/was/backed/up/file0.ext
  • stuff/that/was/backed/up/file1.ext
  • stuff/that/was/backed/up/file3.ext

Вместо:

  • X:/mydata/backup/stuff/that/was/backed/up/file0
  • и т. Д.

Путь может быть любым, поэтому я не могу использовать жестко запрограммированныйрешение, например, использование Split(path, "/", 2) в каталоге Application.StartupPath (который я сейчас использую).

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

после долгих потягиваний и совершенно бесполезных комментариев я нашел решение:

Dim unitstring As String() = Split(TextBox2.Text, "\") 'separate directory names
Dim unitcount As Integer = Array.LastIndexOf(unitstring, Path.GetFileName(TextBox2.Text)) + 2 'get how far in the directory we are from the root. 
Dim paths As New List(Of String) 'list to hold results
For Each x In IO.Directory.GetDirectories(TextBox2.Text, "*", SearchOption.AllDirectories) 'loop through all directories to get them in the format needed
    Dim pathsplit As String() = Split(x, "\", unitcount) 'split from parent
    paths.Add(pathsplit(unitcount - 1)) 'the last item in the array is what is needed.
Next

, если кому-то еще нужен такой код, не стесняйтесь его использовать.

0 голосов
/ 02 декабря 2018

Вы можете использовать методы из System.IO.Path для манипулирования строками пути.

Для разделения каталога и имени файла:

Dim filenameAndExtension As String = Path.GetFileName(fullPath)
Dim directory As String = Path.GetDirectoryName(fullPath)

Вы также можете использовать Path.GetFileName(directory) для получения последней частипути к каталогу.

Чтобы объединить каталог и имя файла:

Dim fullPath As String = Path.Combine(directory, filenameAndExtension)
...