Java项目访问resources文件
最近在对接支付宝支付的开发,需要取到支付的RSA公钥和私钥。于是把公钥和私钥加到resources文件夹里。但是不知道怎么读到这两个文件,也就是不知道路径怎么写。于是网上搜索了下如何获取工作路径,System.getProperty("user.dir"); 用单元测试跑了下,可以拿到Module路径。

得到D:\WorkSpace\daikuan\aic\aic-common
aic是project aic-common 是module路径。然后部署到Tomcat下获取到的就是D:\Java\apache-tomcat-8.5.8\bin 了,竟然是Tomcat路径。

所以使用System.getProperty("user.dir");取项目文件这一招不好使,咨询其他同事得知可以通过ClassLodaer路径获取项目下得文件。getClassLoader代码如下
public static ClassLoader getClassLoader() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = PropertiesUtil.class.getClassLoader();
}
return classLoader;
}
- getResources返回来的是一个URL 对象集合,不尽友好,但还是可以用,项目结构如下

- ClassLoader 并未提供class的路径,但是提供了getResources用以搜索class下的文件,获取密钥的代码如下
Enumeration<URL> keyPath= PropertiesUtil.getClassLoader().getResources("resources\\tianping\\private-rsa.pfx");
URL url=null;
String path=null;
while(keyPath.hasMoreElements()){
url=keyPath.nextElement();
System.out.println(url.getPath());
String path=url.getPath();
}
- 返回来的 keyPath 是空的,同事取configuration.properties是没问题,那么问题应该出在我写的路径上。比这时候我去生成的war包里查看了下configuration.properties和tianping文件夹的相对关系,如图所示

- configuration.properties就在classes 路径下,而我放在resources的路径的天平文件夹也在classes路径下,大概是Maven打包的原因吧。于是我就直接将"resources\tianping\private-rsa.pfx" 改成了"tianping\private-rsa.pfx"
- 改完之后打印出来的是这样一个路径
/D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping%5cprivate-rsa.pfx。%5 给人感觉是转过编码似的,所以我做了个 URLDecoder.decode 解码得到/D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping\private-rsa.pfx竟然出现了这样的路径 即含有/ 还含有\。 - 然后用
FileInputStream ksfis = new FileInputStream(path);试了一下是可以访问的。baidu了下没有找到关于路径中同时有/ \的资料,有点摸不着头脑了。我感觉出现\ 可能会和"tianping\private-rsa.pfx" 有关系,所以我就改成了"tianping/private-rsa.pfx"返回的路径就正常多了 /D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping/private-rsa.pfx 使用FileInputStream也是可以访问的。
Java项目访问resources文件的更多相关文章
- spring boot项目中无法访问resources文件夹问题
如图,浏览器默认访问static文件下的内容,无法访问templates文件下的html文件. 解决方法: 在application.properties文件中添加静态资源目录的配置即可.
- jenkins部署java项目,脚本文件放在远程仓库中 和jar一起打包(六)
jenkins部署java项目到远程linux上,脚本文件和项目一起上传到gogs上,直接执行gogs上的脚本文件来执行项目 (1)新建maven项目 pom.xml的配置 <project x ...
- Java项目读取resources资源文件路径那点事
今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑.正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径, ...
- Java项目生成Jar文件
打开 Jar 文件向导 Jar 文件向导可用于将项目导出为可运行的 jar 包. 打开向导的步骤为: 在 Package Explorer 中选择你要导出的项目内容.如果你要导出项目中所有的类和资源, ...
- java项目引用证书文件(微信支付的p12文件)
1. 绝对路径: // windows: public static String PATH1 = "E:\\project27_app_wuyoujie\\apiclient_cert.p ...
- Eclipse 中 Java 项目中 .settings 文件夹作用
今天工作时,因对 .settings 文件夹误操作,耗时 6 个多小时,才了解到原因就出在 .settings 文件夹.经查阅资料,对 .settings 做如下整理: 就如setting这个名字,就 ...
- java项目中Excel文件的导入导出
package poi.excel; import java.io.IOException; import java.io.InputStream; import java.io.OutputStre ...
- Eclipse java项目将普通文件转化为Source文件的操作
前提:该项目中已经将原有的Source folder删除掉. 右键单击普通文件>Build path>Use as Source Folder.
- java项目中Excel文件预览
package com.linkonworks.df.busi.utils; import java.io.File; import java.io.FileInputStream; import j ...
随机推荐
- java核心机制
Java中有两种核心机制:Java虚拟机(Java Virtual Machine).垃圾收集机制(Garbage collection) 一.核心机制之Java虚拟机 ① Java虚拟机可以理解成一 ...
- luoguP1379 八数码难题[启发式搜索]
题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...
- Jenkins2 插件 Pipeline+BlueOcean 实现持续交付的初次演练
需要完成的目标 使用Pipeline完成项目的checkout,package.deploy.restart 提取出公有部分封装为公有JOB 实现pipeline对其他JOB的调用和逻辑的判断 实现任 ...
- 【SignalR学习系列】1. SignalR理论介绍
什么是SignalR? ASP.NET SignalR 是一个让 ASP.NET开发者可以简单地给自己的程序添加即时通讯功能的开发库.即时通讯功能可以直接从服务器端给在线的客户端发送数据,而不用等待客 ...
- Spring源码情操陶冶-AbstractApplicationContext#registerListeners
承接前文Spring源码情操陶冶-AbstractApplicationContext#onRefresh 约定web.xml配置的contextClass为默认值XmlWebApplicationC ...
- python机器学习实战(三)
python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7277205.html 前言 这篇notebook是关于机器 ...
- list集合为空或为null的区别
简述 判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事. 新建一个list对象,默认值是空,而非null: ...
- Git时光机穿梭之工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
- HDU--1003 Max Sum(最大连续子序列和)
Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...
- HPU--1280 Divisible
题目描述 给定一个很大的整数,我想知道它能否被9整除. 输入 有t组测试数据,每组数据给定一个整数N不存在前导0.(1 <= t <= 20,1 <= N <= 10^200) ...