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路径问题最终解决方案—可定位所有资源的相对路径寻址相关推荐

  1. java虚拟机资源根目录_Java路径问题最终解决方案—可定位所有资源的相对路径寻址 - java - CSDN技术......

    Java路径问题最终解决方案 -可定位所有资源的相对路径寻址 前言 Java的路径问题,非常难搞.最近的工作涉及到创建和读取文件的工作,这里我就给大家彻底得解决Java路径问题. 我编写了一个方法,比 ...

  2. Java路径问题最终解决方案

    http://blog.csdn.net/shendl/article/details/1427475  Java路径问题最终解决方案 -可定位所有资源的相对路径寻址 前言 Java的路径问题,非常难 ...

  3. Java路径问题最终解决方案使用演示

    Java路径问题最终解决方案使用演示 前言 在<Java路径问题最终解决方案-可定位所有资源的相对路径寻址>一文中,我给大家提供了一个助手类ClassLoaderUtil ,和它的publ ...

  4. Java路径问题终于解决方式—可定位全部资源的相对路径寻址

    Java路径问题终于解决方式-可定位全部资源的相对路径寻址 参考文章: (1)Java路径问题终于解决方式-可定位全部资源的相对路径寻址 (2)https://www.cnblogs.com/blfb ...

  5. ASP.NET 链接 Access 数据库路径问题最终解决方案

    当做小项目用 ASP.NET + Access 数据库时,总是遇到数据库路径问题,本人以前的解决方法是每次访问数据库时,把链接字符串以参数的形式传到数据访问层,实施起来相当麻烦,这次找到了一个比较好的 ...

  6. 记录一次java.lang.ClassCastException的java类型转换异常解决方案-附最终解决方案

    自己的项目中,有个定时任务的模块,里面需要将返回的对象强转为某个实体类JobModel,可是在转换的过程中,却报出了java.lang.ClassCastException: com.jy.admin ...

  7. java系统高并发解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...

  8. Java小白修炼手册--第四阶段--JDBC(Java Database Connectivity : Java访问数据库的解决方案 )

    目录 JDBC原理 JDBC标准 JDBC是什么 使用JDBC优点 JDBC接 口及数据库厂商实现 ​JDBC工作原理 Driver ( 驱动程序)接口及驱动类加载 ​Connection( 连接,关 ...

  9. oracle java javapath_系统找不到C:\ProgramData\Oracle\Java\javapath\java.exe问题及解决方案...

    前一段时间本人的电脑崩溃了,系统还原之后,eclipse就用不了,也找不大原因.eclipse报错原因是jvm出现问题:JVM terminated Exit code=2 C:\ProgramDat ...

最新文章

  1. 问题解决:树莓派上Python用pip进行安装耗尽内存,卡死
  2. 使用 uiautomator2
  3. 【收藏】网络故障处理手册大全,看完再也不怕出问题了
  4. 几个容易引起误会的英文短语
  5. 使用JCache缓存方法结果
  6. hash存储结构【六】
  7. Javascript第五章获取DOM对象的属性,加游览器搜索框内容点击跳转源码第七课
  8. Druid连接池jar包的下载 配置和简单使用
  9. java jeditorpane 自动换行_java – JTextPane JScrollPane自动换行?
  10. 看完这20部电影,你可以去全球任何一家公司做董事长或总经理
  11. 【mysql表查询】某门课程的前三名(包含并列)
  12. html根据出生日期计算星座,0047 JavaScript实现根据输入日期计算所属星座
  13. 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8
  14. Oracle进阶(六)包(Package)和包体
  15. 七大江河水系--海河
  16. [Excel]常用技巧
  17. 操作系统简介及编程语言
  18. 全国首例!法院判售假者在淘宝网说“对不起”
  19. 数据挖掘-泰坦尼克号生存数据分析
  20. chosen(下拉列表带搜索插件)和layer(弹出框插件)在一起使用会有冲突,解决办法

热门文章

  1. 【一遍过!!!】1014 Waiting in Line (30 分)(题意+分析)
  2. 【详细注释】1058 选择题 (20 分)
  3. 史上最详细 DevC++无法运行正则表达式
  4. 计算机网络实验(华为eNSP模拟器)——第四章 配置静态路由、动态路由
  5. git stash 强制恢复_git操作与分支管理规范
  6. linux vi模式替换,linux基础命令之:vi模式下查找和替换
  7. mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点
  8. c++代码表白_推荐!在浪漫的日子里程序猿如何用C语言实现520表白代码
  9. todolist实现删除的功能_coc-todolist: nvim/vim 的 todolist/task 管理插件
  10. 怎么在数据库服务器解压文件,数据库服务器9怎么解压