如何在Kotlin/Java中通过绝对与相对路径生成目标绝对路径?
解决方案:用Java NIO Path类处理路径层级
不用手动拼接字符串,Java和Kotlin都可以借助Java NIO的Path类安全处理路径操作,它会自动解析路径层级,避免手动处理的各类错误。
方法一:通过相对路径解析并标准化
适合相对路径不固定的场景(比如可能是../、../../或其他动态相对路径):
import java.nio.file.Paths fun main() { val absolutePath = Paths.get("a/b/c") val relativePath = Paths.get("../../") // 解析相对路径并自动标准化层级 val resolvedPath = absolutePath.resolve(relativePath).normalize() println(resolvedPath.toString()) // 输出 "a" // 若需要末尾带斜杠,可按需处理: println("${resolvedPath}/") // 输出 "a/" }
方法二:直接获取上级路径(适合固定回退层级)
如果明确要回退两级,直接调用getParent()方法更直接:
import java.nio.file.Paths fun main() { val absolutePath = Paths.get("a/b/c") // 连续获取两次上级路径,注意处理层级不足的异常 val targetPath = absolutePath.parent?.parent ?: error("路径层级不足,无法回退两级") println(targetPath.toString()) // 输出 "a" }
为什么用Path类?
- 跨平台自动适配路径分隔符(Windows用
\,Unix用/) - 自动处理路径中的冗余部分(比如
./、../) - 避免手动字符串拼接可能出现的格式错误、层级计算错误
内容的提问来源于stack exchange,提问作者Nikolai
相关产品推荐
相关产品推荐

