Как получить имя каталога из пути в Java? - PullRequest
0 голосов
/ 28 мая 2019

Я перечисляю все папки, которые находятся на сервере. Все папки расположены так:

=> Пример 1: "C: \ A \ AB \ ABC \ FolderToListA-someText"

=> Пример 2: "C: \ D \ DE \ DEF \ FolderToListB-someText"

Я хотел бы получить FolderToLists, но возвращать его только один раз. А не количество раз, которые являются подкаталогами.

Я перечислил каждую папку и попробовал использовать части String [], но проблема в том, что, когда я перечисляю каждую папку в родительском каталоге, я получаю дубликат «FolderToList»

Пример: FolderToList содержит 2 каталога, которые он будет возвращать дважды из FolderToList.

for(int j = 0 ; j < folderOrigin.length; j++) 
{
    if(folderOrigin[j].toString().contains("-") && folderOrigin[j].length() > 29)
    {   
        String fds = folderOrigin[j].toString();;
        fds = fds.substring(0,29);

        String [] parts = fds.split("\\\\"); 
        String designation = parts[parts.length-1];     
    }
}

Я ожидаю, что вывод будет «FolderToListA», «FolderToListB», а не «FolderToListA» «FolderToListA» в зависимости от подкаталогов в FolderA, то же самое для FolderB

1 Ответ

0 голосов
/ 28 мая 2019

Если я правильно понял, вы просто не хотите двойников?Если это так, вам просто нужно добавить каждое обозначение в вашем цикле for в наборе, чтобы избежать двойных значений.

Примерно так:

Set<String> designations = new HashSet<String>(); 

for(int j = 0 ; j < folderOrigin.length; j++) {

  if(folderOrigin[j].toString().contains("-") && folderOrigin[j].length() > 29){

    String fds = folderOrigin[j].toString();;
    fds = fds.substring(0,29);

    String [] parts = fds.split("\\\\"); 
    String designation = parts[parts.length-1];
    designations.add(parts[parts.length-1]);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...