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 ...
随机推荐
- 修改tomcat的编码方式,可以解决某些get请求乱码问题
在tomcat/conf/server.xml配置文件添加如下,修改tomcat的编码方式 <Connector URIEncoding="utf-8" connection ...
- 十一 hashlib模块
# 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的 ...
- python爬虫小说代码,可用的
python爬虫小说代码,可用的,以笔趣阁为例子,python3.6以上,可用 作者的QQ:342290433,汉唐自远工程师 import requests import refrom lxml i ...
- Why is it called “armature” instead of “skeleton”? or perhaps “rig”?
Great question, I’ve always assumed armature/skeleton to be the same thing, here’s a quote from an a ...
- m文件转换c代码
parametet.mclc; clear; load('src.mat') CZT_N = ; CZT_M = ; CZT_W = exp(-j*(*pi/)); CZT_A = exp(j**pi ...
- Mac 安装、卸载JDK 1.6
卸载 输入 sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/Preferenc ...
- SSM框架整合过程总结
-----------------------siwuxie095 SSM 框架整合过程总结 1.导入相关 jar 包( ...
- 20172306 2018-2019《Java程序设计与数据结构课堂测试补充报告》
学号 2017-2018-2 <程序设计与数据结构>课堂测试补充报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 刘辰 学号:20172306 实验教师:王志强 必 ...
- HOOK NTFS 禁止格式化
if(bHooked == FALSE) { RtlInitUnicodeString (&HookDriverName, L"\\FileSystem\\Ntfs"); ...
- turtle库的学习笔记
(1)turtle使用pen来绘制图形 pendown() 放下画笔,移动到指定点后继续绘制 penup() 提起画笔,用于另起一个地方绘制时使用 pensize(width) 设置画笔线条 ...