我只想提取最后一级的目录名。我在哪里做错了?我的目录中只有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);
}
答案 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);
}
}