在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获取资源的路径的更多相关文章

  1. Java 获取资源文件路径

    1 问题描述 通过源码运行时,一般使用如下方式读取资源文件: String str = "1.jpg"; 资源文件与源码文件放在同一目录下,或者拥有同一父级目录: String s ...

  2. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

  3. java获取文件的路径问题

    java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方 ...

  4. Java获取web项目路径

    File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...

  5. wpf 前台获取资源文件路径问题

    1 <ImageBrush ImageSource="YT.CM.CommonUI;component/Resource/FloadwindowImage/middle.png&quo ...

  6. Java获取配置文件跟路径

    一直以为使用new File(相对路径)可以读取class目录下的文件,其实不然.网上查询了一些资料,弄清楚了原理,总结如下: package com.coshaho.learn; import ja ...

  7. java获取当前文件路径的方法

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  8. Java获取资源路径——(八)

     获取文件资源有两种方式: 第一种是: 获取Java项目根目录开始制定文件夹下指定文件,不用类加载器(目录开始要加/) // 获取工程路径 System.out.println(System.getP ...

  9. java获取当前文件路径 [转]

    1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合: package com.zcjl.test.base; imp ...

随机推荐

  1. jsonConfig使用方法

    1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ...

  2. 《Unix内核源码剖析》

    <Unix内核源码剖析> 基本信息 作者: (日)青柳隆宏 译者: 殷中翔 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115345219 上架时间:2014-2 ...

  3. noise_process.c

    #include <math.h>#include "otdr_const.h"#include "haar.h"#include "ot ...

  4. Ubuntu双系统安装

    原文链接: http://www.jianshu.com/p/2eebd6ad284d   作者 Volcanoo 2016.01.31 00:07 字数 1737 阅读 141859评论 161喜欢 ...

  5. Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信

    1.Jni不在赘述.翻看前面博客 2.直接上代码 1)Java层,直接加在AppActivity.java中 public class AppActivity extends Cocos2dxActi ...

  6. ubuntu 12.04 安装无线网卡驱动

    安装ubuntu 12.04后,无线网卡不可用,采用以下方式解决: 1.在终端中运行如下命令,重新安装b43相关的全部驱动和firmware: sudo apt-get install bcmwl-k ...

  7. POJ 1753 Flip Game (枚举)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26492   Accepted: 11422 Descr ...

  8. 用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)(二) 【转】

    http://blog.csdn.net/fm0517/article/details/38110633 http://blog.csdn.net/fm0517/article/details/381 ...

  9. Divide Two Integers leetcode java

    题目: Divide two integers without using multiplication, division and mod operator. 题解: 这道题我自己没想出来...乘除 ...

  10. 10个最好的 jQuery 视频插件

    在这篇文章中已经收集了10个最佳的jQuery视频插件,帮助开发人员容易地实现网站播放影片功能.可以显示视频和视频播放列表. 1. Bigvideo.js BigVideo.js 是一个jQuery插 ...