簡體   English   中英

如何在目錄/文件夾中查找子目錄?

[英]How to find sub-directories in a directory/folder?

我正在尋找一種方法來獲取給定目錄中的所有目錄名稱,但不是文件。

舉例來說,假設我有一個文件夾叫Parent了,里面我有3個文件夾: Child1 Child2Child3

我想獲取文件夾的名稱,但不關心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);
    }
}
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();
    }
}

}

====內部類/方法提供File = URL ======

    File currentDir = new File("/home/akshya/NetBeansProjects/");
    displayDirectoryContents(currentDir);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM