Так что я должен использовать систему дерева файлов Java, потому что файлы .listfiles по какой-то причине невероятно медленно проходят через удаленную сеть. Однако все примеры системных файлов Java перечисляют все файлы в подкаталогах, сильно замедляя работу программы. Как я могу сделать это так, чтобы он выполнял поиск только в каталоге и возвращал имена папок и файлов только в этом каталоге, а не в подкаталогах.Использование системы дерева файлов Java для получения только файлов и папок, а не подкаталогов
Пример кода:
package javaapplication6;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/** Recursive listing with SimpleFileVisitor in JDK 7. */
public final class JavaApplication6 {
public static void main(String... aArgs) throws IOException{
String ROOT = "\\\\directory";
FileVisitor<Path> fileProcessor = new ProcessFile();
Files.walkFileTree(Paths.get(ROOT), fileProcessor);
}
private static final class ProcessFile extends SimpleFileVisitor<Path> {
@Override public FileVisitResult visitFile(
Path aFile, BasicFileAttributes aAttrs
) throws IOException {
System.out.println("Processing file:" + aFile);
return FileVisitResult.CONTINUE;
}
@Override public FileVisitResult preVisitDirectory(
Path aDir, BasicFileAttributes aAttrs
) throws IOException {
System.out.println("Processing directory:" + aDir);
return FileVisitResult.CONTINUE;
}
}
}
Любое понимание или помощь будет принята с благодарностью, спасибо.
Если вы не хотите перезаписывать файлы, почему вы используете 'Files.walkFileTree'? Вы можете просто использовать «DirectoryStream» с фильтром. – Tunaki
Не ускоренная прогулка? –
Речь идет не о скорости, а о цели: 'walkFileTree' desiged, согласно его имени, для того, чтобы ходить по файловому дереву, это означает рекурсию внутри подкаталогов. Если вы просто хотите перечислить содержимое папки (без рекурсии), то «DirectoryStream» - это то, что вы должны использовать. Этот класс предназначен для обработки очень больших каталогов. – Tunaki