java 相对路径获取 -- getResource的应用

(一)函数:
     (1)   Class.getResource(String path)           
     (2)   Class.getClassLoader.getResource(String path)

其中(2)中 path不能以'/'开头
(1)中path 开头有无'/' 均可,含义不同

(二) 测试目录结构:

|--project

    |--src

        |--mytest

            |--RePathTest.java

            |--file1.txt

        |--file2.txt

    |--bin

        |--mytest

            |--RePathTest.class

            |--file3.txt

        |--file4.txt

(三)用法:
(2)中  默认是从ClassPath (即 bin 或 classes路径)下获取
本例中:
File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());   
File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());

(1)中 
a. 以'/'开头,而表示从 ClassPath (即 bin 或 classes路径)下获取
本例中:
File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile()); // 从classpath 即 bin下找 

b. 不以 '/'开头,表示相对于  RePathTest.class 的路径
本例中:
File file3 = new File(RePathTest.class.getResource("file3.txt").getFile());   // 从 package mytest 包  找,相对于 .class(此处为   RePathTest. class  )文件

(四)   getResourceAsStream()   vs  getResouce()
getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,
再new InputStream(file)一样的结果

(五)补充
1. web中以 WEB-INF中classes文件为classpath目录
2. getResource 获取路径与 .class文件夹有关,与 .java文件夹无关

(六)测试
package mytest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class RePathTest {
    RePathTest Test = new RePathTest();
    public static void main(String[] argsthrows FileNotFoundException {
    File file3 = new File(RePathTest.class.getResource("file3.txt").getFile());
    //File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile());
    //File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());
    
    FileReader fr = new FileReader(file3);
    BufferedReader br = new BufferedReader(fr);
    try {
        String line = br.readLine();
        while (line != null) {
            System.out.print(line);
            line = br.readLine();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    //File file4 = new File(RePathTest.class.getResource("/file4.txt").getFile());
    //File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());
    
    }
}  

参考:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值