面试题答案
一键面试差异
getAbsolutePath
方法:- 返回文件或目录的绝对路径名。这个路径是从文件系统的根开始完整的路径表示。无论当前工作目录是什么,
getAbsolutePath
总是返回完整的路径。 - 例如,在Windows系统下,如果有一个文件
test.txt
位于C:\projects\test\test.txt
,通过File
对象创建并调用getAbsolutePath
方法,会返回C:\projects\test\test.txt
。在Linux系统下,如果文件位于/home/user/projects/test.txt
,调用该方法会返回/home/user/projects/test.txt
。
- 返回文件或目录的绝对路径名。这个路径是从文件系统的根开始完整的路径表示。无论当前工作目录是什么,
getPath
方法:- 返回由构造
File
对象时使用的路径字符串。如果在创建File
对象时使用的是相对路径,getPath
返回的就是这个相对路径;如果使用的是绝对路径,getPath
返回的就是绝对路径。 - 例如,如果通过
File file = new File("test.txt");
创建File
对象(假设当前工作目录为C:\projects
),调用getPath
方法返回test.txt
。如果通过File file = new File("C:\projects\test\test.txt");
创建File
对象,调用getPath
方法返回C:\projects\test\test.txt
。
- 返回由构造
应用场景选择
- 需要唯一标识文件或目录的场景:
- 例如在进行文件持久化存储的配置,或者在多线程环境中不同线程需要准确访问同一个文件的场景,应该使用
getAbsolutePath
。因为绝对路径不受当前工作目录变化的影响,能确保文件或目录的准确访问。 - 示例代码:
File file = new File("test.txt"); String absolutePath = file.getAbsolutePath(); // 将绝对路径存储到配置文件等,确保后续能准确找到文件
- 例如在进行文件持久化存储的配置,或者在多线程环境中不同线程需要准确访问同一个文件的场景,应该使用
- 在当前工作目录相关操作场景:
- 例如在一个处理当前目录下文件的工具类中,相对路径就足够且更简洁。因为在当前工作目录的上下文中,相对路径能很好地标识文件,并且代码的可移植性更强,不需要关心文件系统的根路径。
- 示例代码:
File file = new File("test.txt"); String relativePath = file.getPath(); // 可以在当前工作目录下直接使用相对路径进行文件操作,如读取文件内容