我正在尝试从stringbuilder中删除子目录
StringBuilder mkPath = new StringBuilder("/sdcard/Downloads/mp3/mysong.mp3");
String nameToRemove = "/"+new File(mkPath.toString()).getName();
mkPath.delete(mkPath.lastIndexOf("/"),nameToRemove.length());
但它一直抛出stringindexoutofbounds异常。有办法解决这个问题吗?
3条答案
按热度按时间42fyovps1#
你越来越
StringIndexOutOfBoundsException
因为mkPath.lastIndexOf("/")
是21
以及nameToRemove.length()
是11
.代替
具有
因为
end
索引必须大于start
索引。检查
StringBuilder.#delete(int, int)
更多细节。zynd9foi2#
我认为你可以更简单地实现你的目标。你只想从最后一个“/”移到最后,对吗?
如另一个答案所述,第二个参数
delete()
不是要删除的字符数,而是要删除的最后一个位置。如果为此传递整个生成器内容的长度,它将删除到字符串的末尾。ippsafx73#
操作文件系统路径的最简单方法是使用
java.io.File
或者java.nio.file.Path
:或
两者都返回不带“/mysong.mp3”的路径。