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 个路径,这有关系吗?
不,您的总字符串directories
无关紧要。问题是以下代码:
int index = directories.get(i).lastIndexOf("/");
String string = directories.get(i).substring(index);
您没有发现目录不是有效路径的可能性。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);
}
}
推荐阅读
- android - Problem after linking Firebase to a React Native app
- php - 在 Amazon Linux 上安装 memcached
- docker - 如何指示 Dockerfile RUN 在不同的 shell 中运行不同的命令?
- node.js - 为 Express 应用程序运行 Mocha 测试后关闭 MongoDB 连接
- c++ - C ++如何在vector中找到一对3整数<对
> > - haskell - `tan` 函数是否返回不正确的结果?
- prolog - 在 WAM Prolog 中实现否定(\+ 或 not/1)
- npm - 如何安装 jest?
- html - 将 CSS 背景图片适配到 IOS
- django - Django 如何在 url 上获取 id?