dentro eu tenho varias subpastas que eu nao sei o nome delas com varios arquivos xmls. eu preciso de um metodo que verifique as pastas , quantas sao e me retorne tb o nome delas para que eu possa itera-las abrindo arquivo por arquivo e seguindo pra proxima pasta. alguem conhece alguma forma? obrigado
fhsantiago não manjo muito de arquivos, mas uma opção é:
se vc tiver o nome das pastas em sequencia, faça um if comparando se o diretorio existe, ± assim:
hehe, nada legal né, rsrs, mas se ninguem souber, isso me faz lembrar os tempos de Clipper hauhauah, acho que a solução ja ta ai em baixo.
T
thingol
Isso é o caso de usar uma rotina recursiva. OK?
Um exemplo de uma rotina dessas (que já tinha na minha mala de ferramentas; dê uma ajeitada para as suas necessidades):
importjava.util.*;importjava.io.*;/** * Faz algo parecido com "dir /s *.html" (no caso Windows) ou * find . -name '*.html' -print (no caso Unix). * Cuidado: se houver um arquivo "XXX.HTML" (em maiúsculas) não vai * reconhecer, a menos que você explicite na expressão regular. */classExemploDir{/** * @param startingDirectory O diretório inicial. * @param pattern Uma expressão regular que deve ser aplicada * ao nome do arquivo. */publicList<File>findFiles(finalFilestartingDirectory,finalStringpattern){List<File>files=newArrayList<File>();if(startingDirectory.isDirectory()){File[]sub=startingDirectory.listFiles(newFileFilter(){publicbooleanaccept(Filepathname){returnpathname.isDirectory()||pathname.getName().matches(pattern);}});for(FilefileDir:sub){if(fileDir.isDirectory()){files.addAll(findFiles(fileDir,pattern));}else{files.add(fileDir);// }}}returnfiles;}/** * */publicstaticvoidmain(String[]args){ExemploDired=newExemploDir();// Listando todos os arquivos "*.html"System.out.println(ed.findFiles(newFile("."),".*\\.html"));// Listando todos os arquivos "*.java" ou "abs*.txt"System.out.println(ed.findFiles(newFile("."),"(.*\\.java|abs.*\\.txt)"));// Listando todos os arquivos "*.htm*" (incluindo arquivos *.HTM) - útil para WindowsSystem.out.println(ed.findFiles(newFile("."),"(?i).*\\.htm[^.]*"));// Listando todos os arquivos "*.htm*" e "*.jsp" // (incluindo arquivos *.HTM e *.JSP) no diretório C:\INETPUB - útil para WindowsSystem.out.println(ed.findFiles(newFile("C:/INETPUB"),"(?i)(.*\\.htm[^.]*|.*\\.jsp)"));}}