IDEA中读取 resource目录下文件
1. 资源文件

2. 加载文件
public void test() {
try {
System.out.println("begin test");
String filepath = "log4j2.yml";
// 此处取项目路径 + 传入的路径,改路径获取不到文件
// 如果要获取文件需要传入 src/main/resources/log4j2.xml
File temp = new File(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 = new File(uri);
System.out.println(uriFile.getAbsolutePath());
} catch (URISyntaxException e) {
System.err.println(e);
}
}
3. 加载的文件位置

4. Linux下的异常问题
读取jar包中的文件的情况下
4.1 getResource
URL url = LoadCacheFile.class.getClassLoader().getResource(filepath)..getFile();
Linux下的输出:

文件路径中多了两个 ! ,导致找不到文件而报错;有时URL中还可能出现多了一个空格的问题;
4.2 URI
URI resource = LoadCacheFile.class.getClassLoader().getResource(filepath).toURI();
log.info("{}",new File(resource).getAbsolutePath());
异常现象:

5. 正确的使用方式
5.1 getResourceAsStream
LoadCacheFile.class.getClassLoader().getResourceAsStream(filepath) 这种方式在Windows和Linux下都没有问题,建议使用此种方式
5.2 配置文件尽量不要放在jar包中,最好在jar包外单独的放在一个文件夹,也便于后期配置文件的修改。
出门左拐:启动jar文件时指定配置文件目录
IDEA中读取 resource目录下文件的更多相关文章
- 发布jar包到服务器读取resource目录下文件
* 解决:当项目打包成jar之后resources路径下面的证书文件访问不到* 思路:* 1.运行时先复制一个jar* 2.将复制的jar解压到jar文件目录* 3.删除复制的jar跟解压的非证书文件 ...
- Spring boot 读取resource目录下的文件
背景:最近做项目重构将以前的ssh + angular js架构,重构为spring boot + vue.项目是一个数据管理平台,后台涉及到多表关联查询,数据导入导出等. 问题:读取resource ...
- java读取resource目录下的配置文件
java读取resource目录下的配置文件 1:配置resource目录 下的文件 host: 127.0.0.1 port: 9300 2:读取 / 代表resource目录 InputSt ...
- SpringBoot打成jar包后,获取不到读取resources目录下文件路径的问题
问题描述: Springboot没有打成jar之前,可以成功获取读取resources目录下xxx.json文件的 路径.但是打成jar包后,接口调不通,原因是获取不到文件的路径. 原因: 在本地进行 ...
- [Java] 在 jar 文件中读取 resources 目录下的文件
注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...
- java项目中读取src目录下的文件
private void getUser(String tmpfile){ Properties props = new Properties(); props.load(DbTask.class.g ...
- Java中读取某个目录下的所有文件和文件夹
import java.io.File; public class Test1 { public static void main(String[] args) { String path=" ...
- C#中删除目录以及目录下文件的方法
场景 C#中根据文件夹路径,将文件夹以及文件夹下文件删除. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电 ...
- WebApp基础01-设置读取assets目录下文件
要读取assets下的目录,只需要修改三个地方即可 1.res/layout/activity_main.xml 2.AndroidManifest.xml 3.src\com\example\lcy ...
随机推荐
- [C语言]进阶|图形库
---------------------------------------------------------------------- // main.c // Created by weich ...
- unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var arr = [1, 2]; arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2] arr ...
- java.lang.String (JDK1.8)
String类实现了java.io.Serializable, Comparable<String>, CharSequence这三个interface. 看了下这三个interface中 ...
- # 20175213 2018-2019-2 《Java程序设计》第2周学习总结
## 教材学习内容总结 在第二周的学习过程中,我学习了第二章和第三章的内容.第二章中,我学习了基本数据类型和类型转换运算以及与C语言有着相同和不同的数组.标识符由字母,下划线,美元符号和数字组成,并且 ...
- jQuery之动画
动画相关方法: .hide()..show()..toggle() 参数:null 或 (duration, easing, callblack) .fadeIn..fadeout ..fadeTog ...
- 特大数字之和,返回结果是字符串(考虑到数字特别大,如果相加会产生e)
自己做的,没有整理代码,还是做出来了: 做这个题时,最总要的一步思路就是,先让长度一致,然后从个位开始,每一个与每一个数字相加,如果大于10,则下一次另外两个数相加时加1 function add(a ...
- Codeforces Round #449 (Div. 2)
Codeforces Round #449 (Div. 2) https://codeforces.com/contest/897 A #include<bits/stdc++.h> us ...
- Teemo's tree problem
题目链接 : https://nanti.jisuanke.com/t/29228 There is an apple tree in Teemo's yard. It contains n node ...
- 100-days: seventeen
Title: How 'Bohemian Rhapsody(波西米亚狂想曲)' ended up in 'Wayne's World(反斗智多星)' and became a phenomenon(现 ...
- Django的rest_framework的权限组件和频率组件源码分析
前言: Django的rest_framework一共有三大组件,分别为认证组件:perform_authentication,权限组件:check_permissions,频率组件:check_th ...