如何在java中只获取较低级别的子文件夹名称

时间:2015-08-18 06:47:26

标签: java

我有以下结构:

listener

我想获得AAA AAB ABAA ABB的名单,订单并不重要。

有没有有效的方法呢?

4 个答案:

答案 0 :(得分:2)

Iterate通过你的文件列表并使用Java.io.File.isDirectory()方法检查它是否是一个目录,如果它不是一个目录那么它应该是前一个文件夹是最少的子文件夹。

检查http://www.tutorialspoint.com/java/io/file_isdirectory.htm以了解Java.io.File.isDirectory()

的功能

答案 1 :(得分:1)

首先,您应该迭代以获取所有文件,之后您可以使用String的split方法获取leaves文件夹。样本:

public MyTest(){
  String str = "c:/a/aa/aaa/test.txt";
  String[] arr = str.split("/");
  System.out.println(arr[arr.length-2]); // print aaa
}

答案 2 :(得分:0)

以下是我使用的代码片段:

private void GetListOfFlows(String path, ArrayList<File> files) {
        File directory = new File(path);

        File[] fList = directory.listFiles();
        if(fList.length>0 && !fList[0].isFile())
            for(File x : fList)
                subFolders(x, files);
    }

private void subFolders(File file, ArrayList<File> folders) {

        File[] listFiles = file.listFiles();
        if(listFiles.length > 0 && !listFiles[0].isFile())
            for(File fileInDir : listFiles)
                subFolders(fileInDir, folders);
        else if(listFiles.length > 0 && listFiles[0].isFile())
                folders.add(file);
    }

答案 3 :(得分:0)

您可以使用java.nio.file-API (link)

(Java&gt; = 1.7)

    List<Path> subDirs = new ArrayList<>();

    Path startPath = Paths.get("your StartPath");
    try {
        Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {

                //If there is no subDir --> add it to your list
                if (Files.list(dir).noneMatch(d ->Files.isDirectory(d))){
                    subDirs.add(dir);
                }           
                return FileVisitResult.CONTINUE;
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
    //print out all Subdirs
    subDirs.forEach(System.out::println);