背景介绍
有些代码安全扫描工具会识别出代码中的 File.getAbsolutePath() 并建议将其替换为 File.getCanonicalPath() ,那么这两个方法有什么区别呢?
java.io.File
java.io.File 类包含3种获取文件系统路径的方法:
getPath()getAbsolutePath()getCanonicalPath()getPath()
getPath()返回的是定义时的路径(相对路径 or 绝对路径),跟创建File对象时传入的路径参数有关。
//TODO 补充ExamplegetAbsolutePath()
getAbsolutePath()返回的是定义时路径的绝对路径,但不会处理.和..的路径表示。
//TODO 补充ExamplegetCanonicalPath()
getCanonicalPath()返回的是规范化的绝对路径,相当于将getAbsolutePath()中的.和..解析后替换成真实路径。
//TODO 补充Example
标注
[1] . 指目录本身
[2] .. 指该目录的上一级目录
参考文章:
