2016-04-18 4 views
1

Gibt es eine Möglichkeit, die Tiefe einer rekursiven Dateiauflistung in Java zu begrenzen? Ich verwende FileUtils.listFiles (Dateiverzeichnis, String [] Erweiterungen, boolean rekursiv) von Apache commons-io, um Dateien eines angegebenen Verzeichnisses aufzulisten, aber diese API gibt alle Elemente dieses Verzeichnisses zurück.Wie kann die Tiefe einer rekursiven Dateiauflistung in JAVA begrenzt werden?

+0

Verwenden [Files.walk()] (https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#walk-java.nio.file.Path-int-java.nio.file.FileVisitOption...-) – saka1029

Antwort

0

Eine einfache Google fanden diese

/** 
* Construct an instance with a directory and a file filter and an optional 
* limit on the <i>depth</i> navigated to. 
* <p> 
* The filters control which files and directories will be navigated to as part 
* of the walk. This constructor uses {@link FileFilterUtils#makeDirectoryOnly(IOFileFilter)} 
* and {@link FileFilterUtils#makeFileOnly(IOFileFilter)} internally to combine the filters. 
* A <code>null</code> filter means that no filtering should occur. 
* 
* @param directoryFilter the filter to apply to directories, null means visit all directories 
* @param fileFilter the filter to apply to files, null means visit all files 
* @param depthLimit controls how <i>deep</i> the hierarchy is 
* navigated to (less than 0 means unlimited) 
*/ 
protected DirectoryWalker(IOFileFilter directoryFilter, IOFileFilter fileFilter, int depthLimit) { 
    if (directoryFilter == null && fileFilter == null) { 
     this.filter = null; 
    } else { 
     directoryFilter = (directoryFilter != null ? directoryFilter : TrueFileFilter.TRUE); 
     fileFilter = (fileFilter != null ? fileFilter : TrueFileFilter.TRUE); 
     directoryFilter = FileFilterUtils.makeDirectoryOnly(directoryFilter); 
     fileFilter = FileFilterUtils.makeFileOnly(fileFilter); 
     this.filter = FileFilterUtils.or(directoryFilter, fileFilter); 
    } 
    this.depthLimit = depthLimit; 
} 

Also denke ich, dass Sie die depthLimit Variable setzen müssen,

Ref: http://www.programcreek.com/java-api-examples/index.php?api=org.apache.commons.io.filefilter.TrueFileFilter

Verwandte Themen