zoukankan      html  css  js  c++  java
  • Java之资源文件读取

    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);
    	}
    }
    

      

  • 相关阅读:
    ubuntu16.04添加开机启动任务
    Elasticsearch-5.0.0移植到ubuntu16.04
    转:解决npm install慢的问题
    解决virtualbox装ghost xp装驱动时报portcls.sys蓝屏的问题
    git文件迁移到新架构
    ubuntu16.04文件形式安装mongodb
    linux启动流程
    启动WAMPSERVER出现计算机中丢失 MSVCR110.dll
    socket编程的网络协议
    PHP7的新特性
  • 原文地址:https://www.cnblogs.com/gongxr/p/7832489.html
Copyright © 2011-2022 走看看