java - 获取所有子文件夹的列表

标签 java algorithm recursion functional-programming logic

我有一个程序逻辑问题,如何获取服务器上所有文件夹的列表:

比方说,我有一个如下所示的文件夹结构,我想获取其中所有文件夹的列表:

![在此处输入图片描述][1]

String rootDirectory = “Root”; 
CmdClient client = null; 
client.connect("demo.asperasoft.com", "asperaweb", "demoaspera", 22);

// This method gives list of files inside param folder CmdReplyFile cmdfiles=client.execLs(rootDirectory);

//this method gives a list of files 
File[] fileObjects = cmdfiles.getFileList();

//this method gives file count 
int fileCount= cmdfiles.getFileCount();

这里的文件类不是Java文件类。现在,当我尝试打印所有文件夹的列表时,它只是给我:

阿尔法 测试版 Gamma

private void getFolderList(String rootDirectory) throws IOException, CmdClientException {
        CmdReplyFile cmdfiles=client.execLs(rootDirectory);
        File[] fileObjects = cmdfiles.getFileList();
        for (File fileObject : fileObjects) {
            if (fileObject.isDirectory()) {
                System.out.println(fileObject.getName());
                getFolderList(fileObject.getName());
            }
        }

请提出一个可能的逻辑。

最佳答案

谢谢卡提克!我能够使用您的解决方案做到这一点:

public void getListOfFolders(String rootPath) throws IOException, CmdClientException {
    List<String> folders = new LinkedList<String>();
    folders.add(rootPath);
    getFolders(rootPath, folders);

    for (String items : folders){
        System.out.println("Folders: "+items.toString());
    }
}

public void getFolders(String directoryName, List<String> folders) throws IOException, CmdClientException {
    CmdReplyFile cmdfiles=client.execLs(directoryName);
    File[] fileObjects = cmdfiles.getFileList();
    String dirStructure=folders.get(folders.size()-1).toString();
    for (File file : fileObjects) {
        if (file.isDirectory()) {
            String folderPath=dirStructure+file.getName()+"/";
            folders.add(folderPath);
            getFolders(folderPath, folders);
        }
    }
}

关于java - 获取所有子文件夹的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039741/

相关文章:

python - 将列表中的单词打印到 pygame 中的特定坐标

algorithm - 将边缘添加到树形图中,以便使任意两个顶点之间的新最大距离最小

algorithm - Hadoop 适合哪种类型的并行算法?

java - 使用 : JAX-RS API, ServiceLocator 和远程 EJB 组织我的项目的选项

java - 是否可以在更新 Java Web 启动应用程序时强制清除缓存?

algorithm - 大 O 符号的总和

java - 这段示例代码中哪里发生了回溯?

java - 在Java中递归地替换链表中的字符串

java - C 中的埃及分数

java - Mergesort这个合并函数占用O(1)空间还是O(n)空间?