背景介绍
有些代码安全扫描工具会识别出代码中的 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] ..
指该目录的上一级目录
参考文章: