Как найти подкаталоги в каталоге/папке?
Я ищу способ получить все имена каталогов в данном каталоге, но не файлы.
Например, скажем, у меня есть папка с именем Parent
, а внутри у меня есть 3 папки: Child1
Child2
и Child3
.
Я хочу получить имена папок, но не интересуюсь содержимым или именами подпапок внутри Child1, Child2 и т.д.
Есть ли простой способ сделать это?
Ответы
Ответ 1
Вы можете использовать String[] directories = file.list()
для отображения всех имен файлов,
затем используйте цикл для проверки каждого подфайла и используйте функцию file.isDirectory()
для получения подкаталогов.
Например:
File file = new File("C:\\Windows");
String[] names = file.list();
for(String name : names)
{
if (new File("C:\\Windows\\" + name).isDirectory())
{
System.out.println(name);
}
}
Ответ 2
Если вы используете java 7, вы можете попробовать использовать поддержку, предоставленную в
package java.nio.file
Если ваш каталог содержит много записей, он сможет начать перечислять их, не прочитав их сначала в памяти. читайте больше в javadoc: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#newDirectoryStream(java.nio.file.Path,%20java.lang.String)
Здесь также приведен пример, соответствующий вашим потребностям:
public static void main(String[] args) {
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path file) throws IOException {
return (Files.isDirectory(file));
}
};
Path dir = FileSystems.getDefault().getPath("c:/");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
for (Path path : stream) {
// Iterate over the paths in the directory and print filenames
System.out.println(path.getFileName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
Ответ 3
public static void displayDirectoryContents(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory Name==>:" + file.getCanonicalPath());
displayDirectoryContents(file);
} else {
System.out.println("file Not Acess===>" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
==== внутри класса/Метод предоставляет файл = URL ======
File currentDir = new File("/home/akshya/NetBeansProjects/");
displayDirectoryContents(currentDir);
}