Java获取资源的路径
在Java中,有两种路径:
- 类路径
- 文件夹路径
使用类路径有两种方式:
- object.getClass().getResource()返回资源的URL
- MyClass.class.getResource()返回资源的URL
- obj.getClass().getResourceAsStream()返回资源流
- MyClass.class.getResourceAsStream()返回资源流
其实就是说,必须通过class获取资源的URL或者资源的输入流。
而获取class又有两种方式:通过对象实例的getClass()方法或者通过类的静态成员class。
在使用资源文件过程中,有时需要获取资源文件的文件夹路径,也就是以Path的方式获取资源。
于是,容易出错误的地方来了。
我编写一个获取类路径中根目录的方法:
//获取根类路径
public static Path getRootClassPath() {
String p = Util.class.getResource("/").getPath();
if (p.contains(":")) p = p.substring(1);
return Paths.get(p);
}
这样一来,就一步到位获得了根路径的Path。
这样看似完美,实际上却是有瑕疵。
原因在于:类路径和文件路径根本不是一一对应的。
类的根路径对应多个文件夹路径,这多个文件夹路径之间用分号隔开。
所以,你不可能获取类的根路径对应的文件夹路径,而只能获得某个具体资源的文件夹路径。
正确姿势如下:
//获取资源的路径
public static Path getResourceAsPath(String resourceName) {
String p = Util.class.getResource(resourceName).getPath();
if (p.contains(":")) p = p.substring(1);
return Paths.get(p);
}
Java获取资源的路径的更多相关文章
- Java 获取资源文件路径
1 问题描述 通过源码运行时,一般使用如下方式读取资源文件: String str = "1.jpg"; 资源文件与源码文件放在同一目录下,或者拥有同一父级目录: String s ...
- java获取classpath文件路径空格转变成了转义字符%20的问题
java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...
- java获取文件的路径问题
java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方 ...
- Java获取web项目路径
File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...
- wpf 前台获取资源文件路径问题
1 <ImageBrush ImageSource="YT.CM.CommonUI;component/Resource/FloadwindowImage/middle.png&quo ...
- Java获取配置文件跟路径
一直以为使用new File(相对路径)可以读取class目录下的文件,其实不然.网上查询了一些资料,弄清楚了原理,总结如下: package com.coshaho.learn; import ja ...
- java获取当前文件路径的方法
第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...
- Java获取资源路径——(八)
获取文件资源有两种方式: 第一种是: 获取Java项目根目录开始制定文件夹下指定文件,不用类加载器(目录开始要加/) // 获取工程路径 System.out.println(System.getP ...
- java获取当前文件路径 [转]
1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合: package com.zcjl.test.base; imp ...
随机推荐
- QT编程之——使用全局变量
在Qt中使用全局变量的实例 1.首先须要在一个头文件里对全局了变量使用exern方法进行定义. //g.h extern char *testStr; 2.仅仅能在cpp文件里对事实上例化,而且实例化 ...
- ubuntu上minigui调试环境的建立
minigui一共有两个版本:商业版()和GPL版(),问了一下飞漫软件,使用商业版前期的费用是9万,有技术支持,包括5000个licenses的费用,后期10K的量的话,每个licenses要6块, ...
- GUI程序设计3
16. 树(JTree)使用示例 例16.1 创建JTree示例. package GUI1; import java.awt.BorderLayout; import java.awt.Contai ...
- [leetcode]Construct Binary Tree from Preorder and Inorder Traversal @ Python
原题地址:http://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意:根 ...
- LoadTestAgentResultsLateException in VS2010
遇到报错, 首先得先仔细读读人家给的出错信息. 而不是先怀疑是自己什么地方弄错了, 胡乱修改. 比如说, 遇到下面的报错: LoadTestAgentResultsLateException R ...
- IOS UITableView索引排序功能
UITbableView分组展示信息时,有时在右侧会带索引,右侧的索引一般为分组的首字母,比如城市列表的展示.当点击右侧索引的字母,列表会快速跳到索引对应的分组,方便我们快速查找.下面,就介绍一下索引 ...
- 自己定义带三角形箭头的TextView
<?xml version="1.0" encoding="utf-8"? > <resources> <declare ...
- Ext 弹出窗体显示到iframe之外
主要是这句话 var _win = new top.Ext.Window({});即可完成需要功能 var _win = new top.Ext.Window({ title: ' ...
- c语言中pthread的理解和使用
在头文件中看到#typedef unsigned long int pthread_t这句话怎么理解,pthread_t是一个什么类型呢? 相当于pthread_t实际是个unsigned long ...
- HDU 5411 CRB and Puzzle (2015年多校比赛第10场)
1.题目描写叙述:pid=5411">点击打开链接 2.解题思路:本题实际是是已知一张无向图.问长度小于等于m的路径一共同拥有多少条. 能够通过建立转移矩阵利用矩阵高速幂解决.当中,转 ...