idea读取linux文件内容,IDEA中读取 resource目录下文件

1. 资源文件

fc3c6a3891bdc96e9034a2b208829abe.png

2. 加载文件

public voidtest() {try{

System.out.println("begin test");

String filepath= "log4j2.yml";//此处取项目路径 + 传入的路径,改路径获取不到文件//如果要获取文件需要传入 src/main/resources/log4j2.xml

File temp = newFile(filepath);

System.out.println(temp.getAbsolutePath());//下面四种情况取编译后target\classes 目录下的文件//File 形式

File file = new File(BootApplication.class.getClassLoader().getResource(filepath).getFile());

System.out.println(file.getAbsolutePath());//InputStream 形式

InputStream inputStream = BootApplication.class.getClassLoader().getResourceAsStream(filepath);

System.out.println(inputStream);//URL 形式

URL url = BootApplication.class.getClassLoader().getResource(filepath);

System.out.println(url);//URI 形式

URI uri = BootApplication.class.getClassLoader().getResource(filepath).toURI();

File uriFile= newFile(uri);

System.out.println(uriFile.getAbsolutePath());

}catch(URISyntaxException e) {

System.err.println(e);

}

}

3. 加载的文件位置

07cc03707525cd973e7979f38c9770c6.png

4. Linux下的异常问题

读取jar包中的文件的情况下

4.1 getResource

URL url = LoadCacheFile.class.getClassLoader().getResource(filepath)..getFile();

Linux下的输出:

757d8222394d2265620e87ef7533bac2.png

文件路径中多了两个 ! ,导致找不到文件而报错;有时URL中还可能出现多了一个空格的问题;

4.2 URI

URI resource = LoadCacheFile.class.getClassLoader().getResource(filepath).toURI();

log.info("{}",new File(resource).getAbsolutePath());

异常现象:

2b0462d4e40a18f2f378d0d95b0dcdcf.png

5. 正确的使用方式

5.1  getResourceAsStream

LoadCacheFile.class.getClassLoader().getResourceAsStream(filepath) 这种方式在Windows和Linux下都没有问题,建议使用此种方式

5.2 配置文件尽量不要放在jar包中,最好在jar包外单独的放在一个文件夹,也便于后期配置文件的修改。

出门左拐:启动jar文件时指定配置文件目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值