java如何获取文件或目录的路径
作者:初二③班
介绍了几种获取项目路径的方法,包括System.getProperty("user.dir")、类加载器getResource()、file.getPath()和file.getCanonicalPath(),并比较了它们的优缺点,推荐使用System.getProperty("user.dir")更为方便
System.getProperty(“user.dir”)
获取当前项目所在的目录,获取当前项目所在的路径。
这里的字符串“user.id”是属性property的固有属性。
// 获取当前项目所在的目录
String property = System.getProperty("user.dir");
System.out.println("property="+property);
运行结果如下
property=C:\Users\admin\Desktop\generate-entity-from-table-master
总结:
- 该方式也同样可以获取项目打包之后,项目包所在的路径。
- 这样可以根据需要,生成java输出的数据文件。
类名.class.getClassLoader().getResource(路径字符串)
获取类(java文件)经过编译后,所在classes字节码目录下位置,也是一个绝对位置。
URL resource = TPath.class.getClassLoader().getResource("org/feng/parser");
System.out.println("resource.getPath()="+resource.getPath());
运行结果
resource.getPath()=/C:/Users/admin/Desktop/generate-entity-from-table-master/target/classes/org/feng/parser
总结:
- 该getResource方法生成的是一个URL对象,
- 其实还要调用URL的getPath()才能得到路径,但是该URL类的toString()也是输出同样的内容。
file.getPath()和file.getCanonicalPath()
getPath获取相对路径,getCanonicalPath获取绝对路径,前提是需要创建file对象。
File file = new File("./src");
String path = file.getPath();
System.out.println("path="+path);
// Canonical:标准的
String canonicalPath = file.getCanonicalPath();
System.out.println("canonicalPath="+canonicalPath);
运行结果
path=.\src canonicalPath=C:\Users\admin\Desktop\generate-entity-from-table-master\src
总结:
- 已相对路径创建对象,但让还没有指定是文件还是目录,且java项目的main目录下,自动会有src目录的,所以这里取巧了。
- 这样可以获取src目录标准(绝对) 路径,方便在执行目录中生成需要的文件或目录。
通过比较,还是使用System.getProperty(“user.dir”)能更方便获取目录,只需根据需要拼接到指定的路径即可。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
