如何在目录/文件夹中查找子目录?
我正在寻找一种方法来获取给定目录中所有目录的名称,但不是文件。
例如,假设我有一个名为 的文件夹,其中我有 3 个文件夹:和 。Parent
Child1
Child2
Child3
我想获取文件夹的名称,但不关心内容,也不关心 Child1、Child2 等中子文件夹的名称。
有没有一个简单的方法来做到这一点?
我正在寻找一种方法来获取给定目录中所有目录的名称,但不是文件。
例如,假设我有一个名为 的文件夹,其中我有 3 个文件夹:和 。Parent
Child1
Child2
Child3
我想获取文件夹的名称,但不关心内容,也不关心 Child1、Child2 等中子文件夹的名称。
有没有一个简单的方法来做到这一点?
如果您使用的是 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();
}
}
您可以使用 列出所有文件名,然后使用循环检查每个子文件并使用函数获取子目录。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);
}
}