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 ...
随机推荐
- 跟我学Spring3(9.2):Spring的事务之事务管理器
原文出处: 张开涛9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManage ...
- Linked List Cycle leetcode java (链表检测环)
题目: Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without usin ...
- Strategy 策略模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 网络结构设计——负载均衡之LVS学习笔记(四)
LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...
- ajax局部刷新一个div下的jsp
用AJAX刷新一个DIV中的jsp内容 <script type="text/javascript"> var xmlhttp; function startrefre ...
- BNU Concentric Rings
http://www.bnuoj.com/bnuoj/problem_show.php?pid=16030 Concentric Rings There are several different ...
- [jQuery] Custom event trigger
$(document).ready(function(){ // Get Weather $('button').on('show.weather', function() { var results ...
- 为什么好多人说win8不好用?
2012年8月就開始接触win8了,那时win8已经出来半年了:自从用了win8之后就感觉他比xp.win7桌面更绚丽.我就喜欢绚丽的桌面.至今使用win8已经两年了,可发现身边好多人都说win8不好 ...
- 【Python学习笔记】
目录 语法 if语句 while循环 字符串常用操作 列表 只读列表元组 字典的使用 语法 if语句 示例 #!/usr/bin/env python user = 'jack' passwd = ' ...
- 使用Python脚本批量裁切栅格
对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...