Java - 项目路径问题浅析

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

文件位置:

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

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

结果却是报错了:

接下来花时间研究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";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值