"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso iterar através de uma árvore de diretório em Java?

Como posso iterar através de uma árvore de diretório em Java?

Postado em 2025-02-06
Navegar:499

How Can I Iterate Through a Directory Tree in Java?

iterando através de uma árvore de diretório em java

uma das tarefas comuns ao trabalhar com diretórios é para iterar através de todos os arquivos e diretórios dentro um diretório especificado. Isso inclui subdiretos, fornecendo acesso abrangente a toda a árvore do diretório. Em Java, existem abordagens padrão para alcançar essa funcionalidade. ser usado para determinar se um arquivo representa um diretório ou um arquivo. Se o arquivo fornecido for um diretório, ele contém uma lista de arquivos e diretórios, que podem ser obtidos usando o método listfiles ().

Uma abordagem direta para iterar através de uma árvore de diretório é usar a recursão. O snippet a seguir demonstra este método: importar java.io.file; public class DirectoryIterator { public static void main (string [] args) { Diretório de arquivos = novo arquivo ("/path/to/dir"); showfiles (diretório.listfiles ()); } public static void Showfiles (arquivo [] arquivos) { para (arquivo de arquivo: arquivos) { if (file.isdirectory ()) { System.out.println ("diretório:" file.getabsolutepath ()); showfiles (file.listfiles ()); // Chamada recursiva } outro { System.out.println ("arquivo:" file.getabsolutepath ()); } } } }

Essa abordagem funciona recursivamente chamando o showfiles () na lista de arquivos retornados por listfiles (). No entanto, é importante lidar com a exceção StackOverfLowerRor, que pode ocorrer se a árvore do diretório for muito profunda para a pilha da JVM para manusear. ]

Para Java 8 e, posteriormente, uma abordagem mais eficiente é usar os arquivos#walk (). Este método implementa a recursão da cauda, ​​que evita a questão do StackOverFlowerRor, mantendo o estado da iteração na pilha de chamadas do método em vez da pilha JVM.

importar java.nio.file.files; importar java.nio.file.path; importar java.nio.file.paths; public class DirectoryIteratorWithJava8 { public static void main (string [] args) lança exceção { Diretório de caminho = paths.get ("/path/to/dir"); Files.walk (diretório) .foreach (path -> showfile (path.tofile ())); } public static void showfile (arquivo de arquivo) { if (file.isdirectory ()) { System.out.println ("diretório:" file.getabsolutepath ()); } outro { System.out.println ("arquivo:" file.getabsolutepath ()); } } }

arquivos#walk () gera um fluxo de objetos de caminho que representa os arquivos e diretórios na árvore de diretório especificada. O método foreach () é então usado para processar cada objeto de caminho e exibir o arquivo ou diretório correspondente.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3