欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java - 项目路径问题浅析

程序员文章站 2022-03-03 18:53:01
...

遇到的一个Java项目路径问题

文件位置:

Java - 项目路径问题浅析

天真的以为直接用相对路径就可以获取文件:

        File file = new File( "src/main/resources/test.xlsx");
        FileOutputStream out = new FileOutputStream(file);
        System.out.println("文件路径为:" + file.getAbsolutePath());

结果却是报错了:Java - 项目路径问题浅析

接下来花时间研究Java项目路径相关的东西,找原因,最后才发现原因很简单....:这个项目是父子多模块结构的项目,在它上面有父项目,new File( "src/main/resources/test.xlsx")的是项目根目录的,也就是父项目的根目录,如下

        File file = new File( "src/main/resources/test.xlsx");
//        FileOutputStream out = new FileOutputStream(file);
        System.out.println("相对路径为:" + file.getAbsolutePath());

输出:文件路径为:/Users/zhangxin/IdeaProjects/observer/src/main/resources/test.xlsx

所以,对于父子项目来说,使用相对路径是千万不能忘了子项目根目录这一层:

        File file = new File( "observer_giant/src/main/resources/test.xlsx");
        FileOutputStream out = new FileOutputStream(file);
        System.out.println("相对路径为:" + file.getAbsolutePath());

 

问题解决了,梳理下Java获取文件的几种方式

  1. new File() :

    
            File file = new File( "observer_giant/src/main/resources/test.xlsx");
            System.out.println("不带 / 是相对Java项目的根目录:" + file.getAbsolutePath());
            File file1 = new File("/observer_giant/src/main/resources/test.xlsx");
            System.out.println("带 / 是相对磁盘根目录,即绝对路径:" + file1.getAbsolutePath());

    输出:不带 / 是相对Java项目的根目录:/Users/zhangxin/IdeaProjects/observer/observer_giant/src/main/resources/test.xlsx
               带 / 是相对磁盘根目录,即绝对路径:/observer_giant/src/main/resources/test.xlsx

  2. 利用类装载器

    String path = FetchLoanCenter.class.getClassLoader().getResource("test.xlsx").getPath();

     

  3. System.getProperty("user.dir") 获取项目根目录,可以以绝对路径找到文件
            String path1 = System.getProperty("user.dir") +
                            "observer_giant/src/main/resources/temp/test.xlsx";

 

相关标签: 问题记录