3

.txtデータファイル (など) とサブフォルダーの両方で構成されるフォルダーがあります。

Java では、指定されたディレクトリ パス内のサブフォルダの数を取得するにはどうすればよいですか?

(したがって、データファイルは除外されます。サブフォルダーのみがカウントされます)

ファイル数のカウントについて読んだことがあり.txtますが、サブフォルダーのみのカウントについては何も見つからないようです。

どこから始めればよいかわかりませんが、アイデアを教えてください。

String directory = "C:\Users\ . \Desktop\ . \workspace\src\testfolder";
int numberOfSubfolders;

//what is numberOfSubfolders in testfolder?

すべての助けに感謝します。

4

4 に答える 4

14

FileFilterディレクトリのみを一覧表示するために使用できます。

File file = new File("/tmp");
File[] files = file.listFiles(new FileFilter() {
    @Override
    public boolean accept(File f) {
        return f.isDirectory();
    }
});
System.out.println("Folders count: " + files.length);

JavaFileクラスはComposite Design Patternの例であるため、実際にインスタンスにそれがファイルisFile()かどうか、またはディレクトリかどうかを問い合わせる必要がありますisDirectory()

ディレクトリをカウントしたい場合で、Java 8Files.find関数を使用している場合は、同じことをより簡潔な方法 (実際にはワンライナー) で行うことができます。

long count = Files.find(
    Paths.get("/tmp"), 
    1,  // how deep do we want to descend
    (path, attributes) -> attributes.isDirectory()
).count() - 1; // '-1' because '/tmp' is also counted in
于 2013-08-18T14:32:13.393 に答える
3

クラスを使用すると、Fileその中にあるファイルを一覧表示でき (フォルダー/ディレクトリの場合)、必要なプロパティでフィルター処理できます ( isDirectory())

次に、結果を数えます。

于 2013-08-18T14:27:51.260 に答える
1

これを試して:

File dir = new File("yourDirPath");
int numberOfSubfolders;
File listDir[] = dir.listFiles();
for (int i = 0; i < listDir.length; i++) {
    if (listDir[i].isDirectory()) {
            numberOfSubfolders++;
        }
}
System.out.println("No of dir " + numberOfSubfolders);
于 2013-08-18T14:32:45.457 に答える