Usuário com melhor resposta
Lista completa de arquivos e subpastas

Pergunta
-
Olá
Eu preciso através de um openfiledialog obter uma relação de arquivos, pastas e subpasta completo.
Ex.: C:\Program Files\file.exe
Consegui parte utilizando:
ListView1.Items.Clear() Dim file As String For Each file In OpenFileDialog1.FileNames ListView1.Items.Add(file) Next
No entanto nao adiciona pastas nem arquivos das subpastas.
Eu preciso disso pois vou comprimir os arquivos, e quando executado extraí-los para uma pasta temporária e executar.
Alguém tem uma ideia?
Desde já agradeço.
Respostas
-
Oi.
Diretórios são estruturados como árvores; por que não usar o componente TreeView? Ele serve para ver árvores.
Usando uma árvore, dá pra populá-la usando recursão:
Private Sub LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView(ByVal diretorio As String, ByVal noPai As TreeNode) Dim dirsFilhos() As String = System.IO.Directory.GetDirectories(diretorio) If dirsFilhos.Length = 0 Then Return Else For Each dirFilho In dirsFilhos Dim noFilho As TreeNode = New TreeNode(dirFilho) noPai.Nodes.Add(noFilho) For Each arquivo In System.IO.Directory.GetFiles(dirFilho) noFilho.Nodes.Add(arquivo) Next LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView(dirFilho, noFilho) Next End If End Sub
Então chame a função com o diretório e nó raíz:
TreeView1.Nodes.Add(New TreeNode("D:\\")) LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView("D:\\", TreeView1.Nodes(0))
Isso lê todos os arquivos e sub-diretórios do diretório raíz e arquivos e sub-diretórios de cada sub-diretório abaixo.
Utilize o componente FolderBrowserDialog em vez de OpenFileDialog; esse último serve para escolher arquivos, não diretórios.
- Marcado como Resposta Marcos SJ quarta-feira, 27 de abril de 2016 13:50
Todas as Respostas
-
Oi.
Diretórios são estruturados como árvores; por que não usar o componente TreeView? Ele serve para ver árvores.
Usando uma árvore, dá pra populá-la usando recursão:
Private Sub LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView(ByVal diretorio As String, ByVal noPai As TreeNode) Dim dirsFilhos() As String = System.IO.Directory.GetDirectories(diretorio) If dirsFilhos.Length = 0 Then Return Else For Each dirFilho In dirsFilhos Dim noFilho As TreeNode = New TreeNode(dirFilho) noPai.Nodes.Add(noFilho) For Each arquivo In System.IO.Directory.GetFiles(dirFilho) noFilho.Nodes.Add(arquivo) Next LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView(dirFilho, noFilho) Next End If End Sub
Então chame a função com o diretório e nó raíz:
TreeView1.Nodes.Add(New TreeNode("D:\\")) LerDiretoriosEArquivosRecursivamenteEAdicionarAaTreeView("D:\\", TreeView1.Nodes(0))
Isso lê todos os arquivos e sub-diretórios do diretório raíz e arquivos e sub-diretórios de cada sub-diretório abaixo.
Utilize o componente FolderBrowserDialog em vez de OpenFileDialog; esse último serve para escolher arquivos, não diretórios.
- Marcado como Resposta Marcos SJ quarta-feira, 27 de abril de 2016 13:50
-
Bom dia,Por falta de retorno, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma nova thread.
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.