我正在寻找一种方法,可以获取指定目录下所有文件夹的名称,但不包括文件。
例如,假设我有一个名为Parent
的文件夹,里面有3个文件夹:Child1
、Child2
和Child3
。
我想要获取这些文件夹的名称,但不关心它们的内容或者Child1、Child2等子文件夹的名称。
是否有一种简单的方法可以实现这个功能?
我正在寻找一种方法,可以获取指定目录下所有文件夹的名称,但不包括文件。
例如,假设我有一个名为Parent
的文件夹,里面有3个文件夹: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);
}
}
"C\\Windows\\"
是什么意思?list()
返回 absolutePath
。 - MordechaiC:\\Project\\Test
,而我们输入一个路径名 abc
,那么程序将把它视为 C:\\Project\\Test\\abc
。 - bhuang3public 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);
}