Java中获取文件绝对路径推荐用Paths.get().toAbsolutePath().normalize(),大小用Files.size()并捕获IOException;避免File.getAbsolutePath()拼接字符串。

在 Java 中获取文件的绝对路径和大小,主要通过 java.io.File 或更推荐的 java.nio.file(NIO.2)API 实现。下面分两部分说明,兼顾兼容性和现代写法。
获取文件的绝对路径
使用 File 类时,调用 getAbsolutePath() 返回字符串形式的绝对路径;但要注意:如果构造时传入的是相对路径,该方法只是“补全”当前工作目录,并不验证文件是否存在或是否真实可访问。
更可靠的方式是用 NIO 的 Paths.get(...).toAbsolutePath(),它基于 JVM 启动时的工作目录解析,行为更一致:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
示例(NIO 推荐):
Path path = Paths.get("data/config.txt");<br>String absolutePath = path.toAbsolutePath().toString(); // 自动转为绝对路径 -
注意:若需规范路径(如消除
..、.),再链式调用.normalize():path.toAbsolutePath().normalize().toString()
获取文件的大小(字节数)
文件大小必须在文件存在且可读的前提下获取。推荐使用 Files.size(path)(NIO),它直接返回 long 类型的字节大小,简洁安全;而 File.length() 在文件不存在或无权限时只返回 0,容易误判。
-
安全获取大小(NIO):
try {<br> long size = Files.size(Paths.get("report.pdf"));<br> System.out.println("大小:" + size + " 字节");<br>} catch (IOException e) {<br> // 文件不存在、无权限或 I/O 错误<br> e.printStackTrace();<br>} -
补充:若要格式化显示(如 KB/MB),可用:
String readable = String.format("%.2f KB", size / 1024.0);
一步到位:同时获取绝对路径和大小
可以组合使用,先转绝对路径再查大小,避免路径歧义:
Path file = Paths.get("logs/app.log");<br>Path abs = file.toAbsolutePath().normalize();<br>long size = Files.size(abs); // 确保用规范化后的绝对路径查大小-
小提示:对目录调用
Files.size()会抛出IOException(不是常规错误),所以必要时先用Files.isDirectory(abs)判断类型。
不推荐的做法(兼容性陷阱)
避免混合使用旧 API 和新 API 做路径拼接,例如:new File("a/b").getAbsolutePath() + "/c.txt" —— 这种字符串拼接跨平台易出错(Windows 用 \,Linux/macOS 用 /),应统一用 Paths.get("a", "b", "c.txt") 构造。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










