java:在分布式项目中读取项目根目录下的文件(jar包也可用)
2018-03-06 17:23
309 查看
String path = Class.class.getClass().getResource("/").getPath();
String configPath=path+fileName;
configPath = java.net.URLDecoder.decode(configPath,"utf-8");
File file = new File(configPath);
Class.class.getClass().getResource("/").getPath();是获得根目录的绝对路径
如下图
我们知道classes是编译后文件的存放地址,classes目录下就是根目录
我的启动项目为jl-titan-build,文件存放在该项目的resources目录下
代码所在项目为jl-titan-core,如果用main方法跑的话,结果和上图不同
得到的是"/D:/Eclipse/bjhy_ljyz/titan-parent/jl-titan-core/target/classes"
也就是说 从哪个项目启动的 得到的结果就是启动项目的根目录
补充-----------------------------------------------
把项目打包为war包,通过Class.class.getClass().getResource("/").getPath()方法 可以在tomcat中运行,但是如果是把项目打包为jar包运行则会报空指针错,原因是Class.class.getClass().getResource("/")为null,之所以这样是因为把项目打包为jar包后 classes文件在jar中 相当于在一个压缩包中 而不是在具体的文件夹中 所以是获取不到文件的绝对路径的
解决办法是使用Class.class.getClass().getResourceAsStream("/"+fileName);该方法以相对路径的方式获取calsses下的文件,传入的参数为文件名,返回的是文件流而不是表示绝对路径的字符串。
String configPath=path+fileName;
configPath = java.net.URLDecoder.decode(configPath,"utf-8");
File file = new File(configPath);
Class.class.getClass().getResource("/").getPath();是获得根目录的绝对路径
如下图
我们知道classes是编译后文件的存放地址,classes目录下就是根目录
我的启动项目为jl-titan-build,文件存放在该项目的resources目录下
代码所在项目为jl-titan-core,如果用main方法跑的话,结果和上图不同
得到的是"/D:/Eclipse/bjhy_ljyz/titan-parent/jl-titan-core/target/classes"
也就是说 从哪个项目启动的 得到的结果就是启动项目的根目录
补充-----------------------------------------------
把项目打包为war包,通过Class.class.getClass().getResource("/").getPath()方法 可以在tomcat中运行,但是如果是把项目打包为jar包运行则会报空指针错,原因是Class.class.getClass().getResource("/")为null,之所以这样是因为把项目打包为jar包后 classes文件在jar中 相当于在一个压缩包中 而不是在具体的文件夹中 所以是获取不到文件的绝对路径的
解决办法是使用Class.class.getClass().getResourceAsStream("/"+fileName);该方法以相对路径的方式获取calsses下的文件,传入的参数为文件名,返回的是文件流而不是表示绝对路径的字符串。
相关文章推荐
- [Java] 在 jar 文件中读取 resources 目录下的文件
- java项目中读取src目录下的文件
- Java GUI项目读取Jar内部外部文件 打包EXE 在没有java环境的电脑上可运行
- java项目中读取根目录下的配置文件
- java项目——读取项目目录下的文件
- Java web 项目读取src或者tomcat下class目录下的xml文件或者properties文件
- Java中使用Jar包时读取当前jar文件所在的目录工具
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- Java读取一个目录(文件夹)下的文件例子
- 从Java档案(JAR)中读取文件
- java 文件系统 及HDFS系统读取目录下文件对比
- 类加载方式读取Java项目中的文件
- JavaIO——java如何读取jar包自身内部的属性文件
- java读取jar中指定的文件
- 为什么不能把BlackBerry开发项目deliverables目录下面的jar文件给第三方?
- 修改eclipse下maven项目的java文件编译目录路径
- 解决新建的Android项目gen目录下没有R.java文件--Android开发经验
- 从 Java 档案 (JAR) 中读取文件
- Java中读取某个目录下的所有文件和文件夹
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件