提取目录名称

时间:2018-06-26 23:21:09

标签: java

我只想提取最后一级的目录名。我在哪里做错了?我的目录中只有1条路径,这有关系吗?

ArrayList<String> directoryNames = new ArrayList<>();
for(int i = 0; i < directories.size(); i++){

    int index = directories.get(i).lastIndexOf("/");
    String string = directories.get(i).substring(index);
    directoryNames.add(string);
 }

1 个答案:

答案 0 :(得分:0)

  

我只想提取最后一级的目录名。我在哪里做错了?我的目录中只有1条路径,这有关系吗?

否,您的directories中的总字符串并不重要。问题是以下代码:

int index = directories.get(i).lastIndexOf("/");
String string = directories.get(i).substring(index);

,您不会发现目录不是有效路径的可能性。如果documentation中没有发现String.lastIndexOf,则返回-1:

  

在任何一种情况下,如果此字符串中均未出现此类字符,则返回-1。

因此,通过将代码更新为以下内容来检查是否发生这种情况:

List<String> directoryNames = new ArrayList<>();

for(int i = 0; i < directories.size(); i++){

   // Instead of using "/", use File.separatorChar because separator char
   // is dependent with the system. 
   int index = directories.get(i).lastIndexOf(File.separatorChar);

   // check only for valid directory name.
   if(index >= 0) {
      // don't include the "/" as the name
      String lastLevel = directories.get(i).substring(index + 1);
      directoryNames.add(lastLevel);
   }

}