Estoy tratando de averiguar cómo usar apache commons io DirectoryWalker. Es bastante fácil de entender cómo subclase DirectoryWalker. Pero, ¿cómo empiezas a ejecutarlo en un directorio en particular?usando DirectoryWalker
Respuesta
Parece que la subclase debería proporcionar un método público que llame a walk().
Solo para ampliar esta respuesta ya que al principio me desconcertaba cómo usar la clase y esta pregunta surgió en google cuando estaba mirando a mi alrededor. Esto es sólo un ejemplo de cómo he usado (menos algunas cosas):
public class FindConfigFilesDirectoryWalker extends DirectoryWalker {
private static String rootFolder = "/xml_files";
private Logger log = Logger.getLogger(getClass());
private static IOFileFilter filter = FileFilterUtils.andFileFilter(FileFilterUtils.fileFileFilter(),
FileFilterUtils.suffixFileFilter("xml"));
public FeedFileDirectoryWalker() {
super(filter, -1);
}
@SuppressWarnings("unchecked")
@Override
protected void handleFile(final File file, final int depth, final Collection results) throws IOException {
log.debug("Found file: " + file.getAbsolutePath());
results.add(file);
}
public List<File> getFiles() {
List<File> files = new ArrayList<File>();
URL url = getClass().getResource(rootFolder);
if (url == null) {
log.warn("Unable to find root folder of configuration files!");
return files;
}
File directory = new File(url.getFile());
try {
walk(directory, files);
}
catch (IOException e) {
log.error("Problem finding configuration files!", e);
}
return files;
}
}
Y entonces usted acaba de invocar ella a través del método público que ha creado, pasando los argumentos que usted puede desear:
List<File> files = new FindConfigFilesDirectoryWalker().getFiles();
Tenga en cuenta que getResource() requiere que la carpeta de recursos esté en la ruta de compilación. Se describe con más detalle aquí: http://lj4newbies.blogspot.com/2008/03/using-classgetresource-load-resource.html – dbasch
Todo lo que quería era una colección de directorios para iterar. Esta subclase proporcionaba lo que necesitaba:
public class UDirWalker extends DirectoryWalker {
public UDirWalker() {
super();
}
public ArrayList<File> getDirectories(File startDirectory) throws IOException {
ArrayList<File> dirs = new ArrayList<File>();
walk(startDirectory, dirs);
return dirs;
}
@Override
protected boolean handleDirectory(File directory, int depth,
Collection results) {
results.add(directory);
return true;
}
}
- 1. ImportError usando nose, no ImportError usando rawtesttest?
- 2. Analizando CSV usando OleDb usando C#
- 3. Usando nombres para discriminar instancias usando IoC
- 4. Usando TabWidget.setDividerDrawable()?
- 5. Usando OpenXmlReader
- 6. Usando GetKeyState()
- 7. Usando PropertyInfo.GetValue()
- 8. Usando django.db.connection.queries
- 9. Usando RAMDirectory
- 10. Usando scala.util.control.Exception
- 11. usando mysql_close()
- 12. Usando System.Random
- 13. Usando ResourceManager
- 14. usando javascript
- 15. cadena usando "*"
- 16. Usando IIterable
- 17. Directorio Walker para Python
- 18. Captura de micrófonos usando Html 5 y difusión usando socket.io
- 19. Decodifica audio usando libavcodec y juega usando libAO?
- 20. hibernate usando anotaciones o usando archivos de configuración de hibernación
- 21. ¿Cómo dividir usando un carácter de prefijo usando expresiones regulares?
- 22. Copiar varios archivos usando comodines/recursivamente usando Wix
- 23. crear un diccionario usando 2 listas usando LINQ
- 24. Autenticación usando LDAP contra ADAM usando seguridad de primavera
- 25. Llamando al teléfono sms api usando phonegap usando javascript
- 26. Cómo construir un softphone (usando el protocolo SIP) usando C#
- 27. cómo cerrar sesión en LinkedIn usando authrequest usando android?
- 28. Usando SQL, ¿cómo actualizo las filas, usando sus propios valores?
- 29. Usando el código C de C++ usando autotools
- 30. Capturar fotos usando la cámara web usando Actionscript
argh !!! por supuesto, ¿cómo echo de menos ver @ # $ @ # $ @ #? –
no lo odias cuando sucede>. < – Nippysaurus
en realidad parece que no tienes que proporcionar un método que llame a pie. otra clase puede llamar a walk() desde el exterior. –