2015-03-13 3 views
0

у меня есть логическая программа вопрос, как я могу получить список всех папок на сервере:Получить список всех подпапок

позволяет сказать, у меня есть структура папок, как показано ниже, и я хотел бы получить список все папки внутри нее:

[введите описание изображения здесь] [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();

файл класс здесь я s не является файловым классом Java. Теперь, когда я пытаюсь список всех папок печати, его просто дать мне:

Альфа Бета Гама

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()); 
 
      } 
 
     }

Просьба предложить возможную логику.

ответ

0

Я надеюсь, что ниже код будет выполнять ваши требования:

public void getListOfFolders(String rootPath) { 
    List<String> folders = new LinkedList<String>(); 
    getFolders(rootPath, folders); 
    // Now folders got everything you need. 
} 

public void getFolders(String directoryName, List<String> folders) { 
    File directory = new File(directoryName); 
    File[] fList = directory.listFiles(); 
    for (File file : fList) { 
     if (file.isDirectory()) { 
      folders.add(file.getAbsolutePath()); 
      getFolders(file.getAbsolutePath(), folders); 
     } 
    } 
} 
+0

Спасибо Kartic за ответ! Хотя, как я уже сказал, класс «Файл» не является Java IO-файлом, его пользовательский sdk, который не имеет метода getAbsolutePath. Я добавляю моментальный снимок api. –

+0

Извините, я этого не заметил. Но вы правильно поняли логику? – Kartic

1

Спасибо Kartic! Я смог сделать это с вашим решением:

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); 
     } 
    } 
} 
+0

Это здорово :) – Kartic