Java中移除列表最后一个元素失败,请求技术帮助
问题解决:移除路径元素失败&正确获取程序目录的方法
你的代码里Arrays.asList()返回的是一个固定大小的列表,它不支持remove()这类修改操作,调用时会抛出UnsupportedOperationException,这就是操作失败的核心原因。
方案一:转成可修改的ArrayList
把创建列表的代码改成下面这样,将固定列表包装成可修改的ArrayList,就能正常执行remove()了:
List<String> path = new ArrayList<>(Arrays.asList(Paths.get("").toAbsolutePath().toString().split("\\\\"))); System.out.println(path); int removeJavaFile = path.size() - 1; path.remove(removeJavaFile); String filePath = path.stream().map(n -> String.valueOf(n)).collect(Collectors.joining("\\")); System.out.println(filePath);
方案二:用Java NIO API直接获取父目录(更推荐)
其实完全不用手动拆分、拼接路径,Java的Path类自带获取父目录的方法,代码更简洁,还能自动适配不同操作系统的路径分隔符:
Path currentAbsolutePath = Paths.get("").toAbsolutePath(); Path programDir = currentAbsolutePath.getParent(); System.out.println(programDir);
内容的提问来源于stack exchange,提问作者Harshini V
相关产品推荐
相关产品推荐

