Java路径问题最终解决方案—可定位所有资源的相对路径寻址
来源:互联网 发布:a卡10.13 hdmi mac 编辑:程序博客网 时间:2024/06/05 19:19
Java路径问题最终解决方案—可定位所有资源的相对路径寻址
@(JAVA)[java]
http://www.cnblogs.com/0616–ataozhijia/p/4094952.html
http://blog.csdn.net/shendl/article/details/1427475
1、在Java项目中,应该通过绝对路径访问文件,以下为访问的常用方法:
第一种方法:
类名.class.getResource("/").getPath()+文件名
第二种方法:
Thread.currentThread().getContextClassLoader().getResource("").getPath()+文件名
现在src目录下的类文件需要访问config目录下的配置文件。
第三种方法:【优先使用】
先把资源文件打包进一个jar包,然后定位jar包中的资源。如何打包请参考maven的使用。
InputStream is = this.getClass().getResourceAsStream("/ip.mmdb");
假设ip.mmdb放在了jar包的根目录下。
2、使用第一种方法
new FileInputStream(LoadProperties.class.getResource("/").getPath() + "seed.txt");new FileInputStream(MyCrawler.class.getResource("/").getPath() + "search.properties")
假设Jediael项目被部署在E:\Project.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\,则
类名.class.getResource(“/”) 返回file:\E:\Project.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Jediael\WEB-INF\classes,即类文件的要目录
类名.class.getResource(“”) 返回file:\E:\Project.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Jediael\WEB-INF\classes\com\jediael\,即类所有的位置
上述2个方法均返回URI的格式,再通过getPath()来获取路径,即将前面的file:\去掉。
3、使用第二种方法
new FileInputStream(Thread.currentThread().getContextClassLoader().getResource("").getPath() + "search.properties")new FileInputStream(Thread.currentThread().getContextClassLoader().getResource("").getPath() + "seed.txt");
二者均返回:
E:\Project\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Jediael\WEB-INF\classes
推荐使用第二种方法!!
转载自:http://blog.csdn.net/shendl/article/details/1427475
但事实上如果资源文件被打包至一个jar包,上述方法会有问题,应该参考以下方法:
http://www.cnblogs.com/0616–ataozhijia/p/4094952.html
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:
//源代码1:package edu.hxraid;import java.io.*;public class Resource { public void getResource() throws IOException{ File file=new File("bin/resource/res.txt"); BufferedReader br=new BufferedReader(new FileReader(file)); String s=""; while((s=br.readLine())!=null) System.out.println(s); }}
复制代码
这段代码写在Eclipse建立的java Project中,其目录为:(其中将资源文件res.txt放在了bin目录下,以便打成jar包)
1、src/
src/edu/hxraid/Resource.java
2、bin/
bin/resource/res.txt
bin/edu/hxraid/Resource.class
很显然运行源代码1是能够找到资源文件res.txt。但当我们把整个工程打成jar包以后(ResourceJar.jar),这个jar包内的目录为:
edu/hxraid/Resource.class
resource/res.txt
而这时jar包中Resource.class字节码:ldc
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址[转]
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址 .
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址(沈东良)
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- IOS基础--#pragma | _pragema 用法
- 数据结构实验之二叉树五:层序遍历
- C++将整形变量转换为字符串
- 解决Tomcat运行内存不足问题
- tomcat和jboss地址栏显示图标
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- 【License】java简单实现license认证-DES
- 10springmvc上传图片
- vi配置
- Spring Boot 1.5.6 启动报错 NoSuchMethodError... AnnotationRepositoryConfigurationSource
- VS2013+OPENcv249问题解决
- JavaScript 计算 目标时间 与 当前时间 的 时间差
- 详解--位运算
- 使用单例模式加载properties文件