Maven获取resources的文件路径、读取resources的文件
路径问题一切要看编译后的文件路径
比如,源文件路径是:

而编译后的文件路径为:

也就是说,resources文件夹下的文件在编译后,都是为根目录,这种情况下,比如我要读取resources 文件夹下的 my.txt 文件路径,
写法①:
// 编译后,项目根路径,写法1
String url1 = A.class.getClassLoader().getResource("").toString();
// 编译后,项目根路径,写法2
String url2 = A.class.getResource("/").toString();
// 编译后,文件根路径
String url3 = A.class.getResource("").toString();
输出:
file:/D:/IdeaWorkspace/test-null-project/target/classes/
file:/D:/IdeaWorkspace/test-null-project/target/classes/
file:/D:/IdeaWorkspace/test-null-project/target/classes/com/convict/
写法②:
// 还有一种getResource 后调用 getFile方法,就没有 [file:],而是以 [/D:xxx] 这样的格式
String url4 = A.class.getClassLoader().getResource("").getFile();
String url5 = A.class.getResource("/").getFile();
String url6 = A.class.getResource("").getFile();
System.out.println(url4);
System.out.println(url5);
System.out.println(url6);
输出:
/D:/IdeaWorkspace/test-null-project/target/classes/
/D:/IdeaWorkspace/test-null-project/target/classes/
/D:/IdeaWorkspace/test-null-project/target/classes/com/convict/
写法③:
String url7 = A.class.getClassLoader().getResource("").getPath();
String url8 = A.class.getResource("/").getPath();
String url9 = A.class.getResource("").getPath();
System.out.println(url7);
System.out.println(url8);
System.out.println(url9);
输出:
/D:/IdeaWorkspace/test-null-project/target/classes/
/D:/IdeaWorkspace/test-null-project/target/classes/
/D:/IdeaWorkspace/test-null-project/target/classes/com/convict/
至此,上面已经有多种获取文件路径的方式,既然拿到路径,就可以读取File 文件,进而读取文件了,如这是my.txt 的内容

则读取文件内容的代码可以如下:
// 获取路径
String filePath = A.class.getClassLoader().getResource("my.txt").getFile();
File my = new File(filePath);
InputStreamReader isr = new InputStreamReader(new FileInputStream(my), StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
String lineTxt;
while ((lineTxt = br.readLine()) != null) {
System.out.println(lineTxt);
}
br.close();
输出:

扩展:
写法②getFile 跟写法③getPath 是有区别的,getResource 方法后返回的是一个 java.net.URL对象,那手动构造一个java.net.URL
URL url = new URL("https://www.baidu.com/img/baidu_jgylogo3.gif?param=1111¶m2=aaaaa");
System.out.println("getFile ==> " + url.getFile());
System.out.println("getPath ==> " + url.getPath());
输出:
getFile == > /img/baidu_jgylogo3.gif?param=1111¶m2=aaaaa
getPath ==> /img/baidu_jgylogo3.gif
可以看出,getFile() 方法可以拿到参数值,而getPath() 就是只取文件名,JDK中文文档相关api如下:


Maven获取resources的文件路径、读取resources的文件的更多相关文章
- java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
- .35-浅析webpack源码之babel-loader入口文件路径读取
在处理./input.js入口文件时,在类型判断被分为普通文件,所以走的文件事件流,最后拼接得到文件的绝对路径. 但是对应"babel-loader"这个字符串,在如下正则中被判定 ...
- java实现将指定文件夹里所有文件路径输出到指定文件作为参数化文件给lr脚本使用
java实现将指定文件夹里所有文件路径输出到指定文件作为参数化文件给lr脚本使用 import java.io.BufferedReader; import java.io.BufferedWrite ...
- C#选择多个文件并读取多个文件数据
原文:C#选择多个文件并读取多个文件数据 版权声明:本文为博主原创文章,转载请附上链接地址. https://blog.csdn.net/ld15102891672/article/details/8 ...
- [Java] 在 jar 文件中读取 resources 目录下的文件
注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...
- Spring boot 文件路径读取异常
在开发代码中,有一段需要获取resources目录下的一个配置文件(这里写作test.xml). 这段代码在ide中没有任何问题,但是一打成jar包发布到线上,这段代码就会报找不到对应文件的错误. 按 ...
- C#ZIP根据路径读取压缩包内文件数量
/// <summary> /// 根据压缩包路径读取此压缩包内文件个数 /// </summary> /// <param name="strAimPath& ...
- 通过文件路径读取CSV表格内的数据
ReadDataFromCSV.h UCLASS() class MYPROJECT_API UReadDataFromCSV : public UBlueprintFunctionLibrary { ...
- nodejs通过mocha处理运行文件路径下所有js文件
1.获取文件路径: 方式一:整个js文件使用 var path=require('path');var public_path=path.resolve('../testcase/listData/* ...
- C#中选中指定文件并读取类似ini文件的内容
一.背景 由于项目中需要去读取设备的配置信息,配置文件的内容和INI配置文件的格式类似,所以可以按照INI文件的方式来处理.涉及如何打开一个文件,获取打开的文件的路径问题,并读取选中的文件里边的内容. ...
随机推荐
- Golang实现集合(set)
package set package set import ( "bytes" "fmt" "sync" ) type Set struc ...
- 构造注入链:POP
1.POP链原理简介: 在反序列化中,我们能控制的数据就是对象中的属性值,所以在PHP反序列化中有一种 漏洞利用方法叫"面向属性编程",即POP( Property Oriente ...
- Python函数与lambda 表达式(匿名函数)
Python函数 一.函数的作用 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段 函数能提高应用的模块性和代码的重复利用率 python 内置函数:https://docs.pytho ...
- 通过UI库深入了解Vue的插槽的使用技巧
Vue官网对于插槽的介绍比较简略,插槽本身也比较"烧脑",很容易看晕,我就一直没看懂,直到 使用了element-plus的组件的插槽. 其实我们可以换一个角度来理解插槽,就会豁然 ...
- preg_match绕过总结
preg_match绕过总结 什么是preg_match 绕过方法 1.数组绕过 preg_match只能处理字符串,当传入的subject是数组时会返回false 2.PCRE回溯次数限制 PHP利 ...
- 【Android】安卓四大组件之Activity(二)
[Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...
- 乡亲们,我们创建了 Dapr 中文交流频道
我们创建了 Dapr 中文交流 QQ 频道,欢迎大家加入!加入方式在文章最后一节. 为什么要创建频道? 解决什么问题 专业性,"你可以在我们群里面钓鱼,因为都是水" 你肯定加过非常 ...
- cesium加载gltf模型点击以及列表点击定位弹窗
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 之 ...
- Windows Server 2008 R2 数据离机备份与恢复操作手册
Windows Server 2008 R2 数据离机备份与恢复操作手册 实验环境 Windows server 2008 R2(服务器) IP地址:192.168.136.175 计算机名:CXH ...
- eclipse不能创建web项目,如何设置(亲测可用)
具体描述:就是在项目右键或者file-->new的时候没有dynamic web project选项)(我这里已经解决.所以看得到) 根本原因:就是有没有web的开发插件 两种办法 1.下载使用 ...