ClassLoaderWrapper.java
package org.utils.resource;

import java.io.InputStream;
import java.net.URL; class ClassLoaderWrapper { ClassLoader defaultClassLoader;
ClassLoader systemClassLoader; ClassLoaderWrapper() {
try {
systemClassLoader = ClassLoader.getSystemClassLoader();
}
catch (SecurityException ignored) {}
} public URL getResourceAsURL(String resource) {
return getResourceAsURL(resource, getClassLoaders(null));
} public URL getResourceAsURL(String resource, ClassLoader classLoader) {
return getResourceAsURL(resource, getClassLoaders(classLoader));
} public InputStream getResourceAsStream(String resource) {
return getResourceAsStream(resource, getClassLoaders(null));
} public InputStream getResourceAsStream(String resource, ClassLoader classLoader) {
return getResourceAsStream(resource, getClassLoaders(classLoader));
} public Class<?> classForName(String name) throws ClassNotFoundException {
return classForName(name, getClassLoaders(null));
} public Class<?> classForName(String name, ClassLoader classLoader) throws ClassNotFoundException {
return classForName(name, getClassLoaders(classLoader));
} InputStream getResourceAsStream(String resource, ClassLoader[] classLoaderArray) {
for (ClassLoader classLoader : classLoaderArray) {
if (null != classLoader) {
InputStream returnValue = classLoader.getResourceAsStream(resource);
if (null == returnValue) returnValue = classLoader.getResourceAsStream("/" + resource);
if (null != returnValue) return returnValue;
}
} return null;
} URL getResourceAsURL(String resource, ClassLoader[] classLoaderArray) {
URL url; for (ClassLoader classLoader : classLoaderArray) {
if (null != classLoader) {
url = classLoader.getResource(resource);
if (null == url) url = classLoader.getResource("/" + resource);
if (null != url) return url;
}
} return null;
} Class<?> classForName(String name, ClassLoader[] classLoaderArray) throws ClassNotFoundException {
for (ClassLoader classLoader : classLoaderArray) {
if (null != classLoader) {
try {
Class<?> clazz = Class.forName(name, true, classLoader);
if (null != clazz) return clazz;
}
catch (ClassNotFoundException e) {}
}
} throw new ClassNotFoundException("Cannot find class: " + name);
} ClassLoader[] getClassLoaders(ClassLoader classLoader) {
return new ClassLoader[] {
classLoader,
defaultClassLoader,
Thread.currentThread().getContextClassLoader(),
getClass().getClassLoader(),
systemClassLoader
};
}
}

  

ResourcesUtils.java
package org.utils.resource;

import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.util.Properties; public class ResourcesUtils { private static ClassLoaderWrapper classLoaderWrapper = new ClassLoaderWrapper(); private static Charset charset; public static ClassLoader getDefaultClassLoader() {
return classLoaderWrapper.defaultClassLoader;
} public static void setDefaultClassLoader(ClassLoader defaultClassLoader) {
classLoaderWrapper.defaultClassLoader = defaultClassLoader;
} public static Charset getCharset() {
return charset;
} public static void setCharset(Charset charset) {
ResourcesUtils.charset = charset;
} public static URL getResourceURL(String resource) throws IOException {
return getResourceURL(null, resource);
} public static URL getResourceURL(ClassLoader loader, String resource) throws IOException {
URL url = classLoaderWrapper.getResourceAsURL(resource, loader);
if (url == null) throw new IOException("Could not find resource " + resource); return url;
} public static InputStream getResourceAsStream(String resource) throws IOException {
return getResourceAsStream(null, resource);
} public static InputStream getResourceAsStream(ClassLoader loader, String resource)
throws IOException {
InputStream in = classLoaderWrapper.getResourceAsStream(resource, loader);
if (in == null) throw new IOException("Could not find resource " + resource); return in;
} public static Properties getResourceAsProperties(String resource) throws IOException {
Properties props = new Properties();
InputStream in = getResourceAsStream(resource);
props.load(in);
in.close(); return props;
} public static Properties getResourceAsProperties(ClassLoader loader, String resource)
throws IOException {
Properties props = new Properties();
InputStream in = getResourceAsStream(loader, resource);
props.load(in);
in.close(); return props;
} public static Properties getResourceAsProperties(File file) throws IOException {
Properties props = new Properties();
if (!file.exists()) return null;
InputStream in = new FileInputStream(file);
props.load(in);
in.close(); return props;
} public static Reader getResourceAsReader(String resource) throws IOException {
Reader reader;
if (charset == null) reader = new InputStreamReader(getResourceAsStream(resource));
else reader = new InputStreamReader(getResourceAsStream(resource), charset); return reader;
} public static Reader getResourceAsReader(ClassLoader loader, String resource) throws IOException {
Reader reader;
if (charset == null) reader = new InputStreamReader(getResourceAsStream(loader, resource));
else reader = new InputStreamReader(getResourceAsStream(loader, resource), charset); return reader;
} public static File getResourceAsFile(String resource) throws IOException, URISyntaxException {
return new File(getResourceURL(resource).toURI());
} public static File getResourceAsFile(ClassLoader loader, String resource) throws IOException
, URISyntaxException {
return new File(getResourceURL(loader, resource).toURI());
} public static InputStream getUrlAsStream(String urlString) throws IOException {
URL url = new URL(urlString);
URLConnection conn = url.openConnection(); return conn.getInputStream();
} public static Reader getUrlAsReader(String urlString) throws IOException {
Reader reader;
if (charset == null) reader = new InputStreamReader(getUrlAsStream(urlString));
else reader = new InputStreamReader(getUrlAsStream(urlString), charset); return reader;
} public static Properties getUrlAsProperties(String urlString) throws IOException {
Properties props = new Properties();
InputStream in = getUrlAsStream(urlString);
props.load(in);
in.close(); return props;
} public static Class<?> classForName(String className) throws ClassNotFoundException {
return classLoaderWrapper.classForName(className);
}
}

  

Java之资源文件读取的更多相关文章

  1. java web 资源文件读取

    前提:假设web应用test(工程名) webapps下面有一资源文件test.html 规则:在获取资源时一般使用的是相对路径,以符号/开头,而 / 代表什么取决于这个地址给谁使用.服务器使用时,/ ...

  2. java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  3. Java学习-019-Properties 文件读取实例源代码

    在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可 ...

  4. Java学习-017-EXCEL 文件读取实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  5. Java学习-016-CSV 文件读取实例源代码

    上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...

  6. Eclipse中建立Maven项目后,Java Resources资源文件下没有src/main/java文件夹

    当建立好一个Maven项目后,在Java Resources资源文件夹下没有看到src/main/java文件夹,然后手动去创建Source Folder时,提示该文件已存在,如图: 有一个解决办法: ...

  7. Java解决大文件读取的内存问题以及文件流的比较

    Java解决大文件读取的内存问题以及文件流的比较 传统方式 读取文件的方式一般是是从内存中读取,官方提供了几种方式,如BufferedReader, 以及InputStream 系列的,也有封装好的如 ...

  8. Java 从资源文件(.properties)中读取数据

    在Java工程目录src下,创建一个后缀为.properties的文件,例如db.properties 文件中的内容如下(键=值): name=mk age=123 address=China 在程序 ...

  9. Java_web项目中在Java文件里面通过类装载器对资源文件读取

    承接上一节:在eclipse完成对Java_web项目里面资源文件的读取 我们首先在src目录下创建一个资源文件db.properties 内容如下: url=127.0.0.1 name=root ...

随机推荐

  1. OpenCV——滤波

    常见滤波函数: 其中前3中为线性滤波,后2中为非线性滤波 参考资料:https://mp.weixin.qq.com/s/3maNqlTSkl6FQs_xqrs8Fg

  2. 树莓派学习笔记(2):常用linux命令

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 1.ls命令:列出文件目录的常用命令,主要参数见下表. -a 列出目录下的所有文件,包括以.开头的隐含文件. -b ...

  3. [笔记] ubuntu下添加windows的字体

    方法如下: 第一步:将windows下喜欢的字体文件copy到一个文件夹中,例如将XP里WINDOWS/FONTS中的字体文件(本人比较贪心,把整个文件夹copy了过来……),在linux中命名为xp ...

  4. Android Fragment(三)ListFragment简单介绍以及Fragment之间通信

    一.Fragment通信简单介绍:Fragments之间是不能够直接通信的,他们之间的通信是通过Activity这个中间件来通信的, 为了让Fragment跟它的Activity通信,我们可以在Fra ...

  5. CAN2.0A 和CAN2.0B

    CAN2.0A 和CAN2.0B 原创 2015年08月03日 16:03:08 3969 CAN2.0A 是CAN协议的PART A部分,此部分定义了11bit的标识区 .CAN2.0B 是CAN协 ...

  6. 【LeetCode92】Reverse Linked List II★★

    题目描述: 解题思路: 题目大意:给定一个链表,反转第m到第n个结点部分,m.n满足1 ≤ m ≤ n ≤ length of list. 解题思路参照LeetCode206题,用迭代法,不过要注意以 ...

  7. centos安装redis并设置开机启动

    1.通过yum安装: yum install redis 2.设置redis.conf中daemonize为yes.设置密码: requirepass 3.安装完后的启动脚本是完善的,/etc/ini ...

  8. [ZJOI2018]保镖

    [ZJOI2018]保镖 Tags:题解 题意 链接 初始在平面上有一些点,九条可怜随机出现在一个矩形内的任意一点.若九条可怜出现在\(O\)点,则平面上所有的点都从\(P_i\)移动到\(P'_i\ ...

  9. [2016北京集训试题15]cot-[分块]

    Description Solution 如图,假如我们知道了以任何一个点为顶点的135-180度的前缀和和90-180度的前缀和,我们就可以搞出三角形的面积. 差分.add[i][j]和dev[i] ...

  10. mysql 配置 root 远程访问

    来源: https://www.cnblogs.com/24la/p/mariadb-remoting-access.html 首先配置允许访问的用户,采用授权的方式给用户权限 GRANT ALL P ...