java加载资源文件的几种方式

转载 2017年01月03日 09:43:48
转载自:http://andyzhu.blog.51cto.com/4386758/775836/

  •  import java.net.URL; 
  •  
  • import org.springframework.context.ApplicationContext; 
  • import org.springframework.context.support.ClassPathXmlApplicationContext; 
  •  
  • public class TestMain { 
  •     public static void main(String[] args) { 
  •  
  •         // ############################################################################################################ 
  •         // 1:使用本类的Class类的getResource()方法 
  •         // 在当前包寻找资源(指定相对路径,其他均返回null。) 
  •         URL filePathUrl1 = TestMain.class.getResource("beans_sameLocation.xml"); 
  •  
  •         // 在根寻找资源(需要文件分隔符"/",其他均返回null。) 
  •         URL filePathUrl2 = TestMain.class.getResource("/beans.xml"); 
  •  
  •         // 在不同包内寻找资源(指定相对路径(需要文件分隔符"/"),其他均返回null。) 
  •         URL filePathUrl3 = TestMain.class.getResource("/test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 2:使用本类的Class类的ClassLoader类的getResource()方法 
  •         // 在相同包内寻找资源,总是返回null。 
  •         // URL filePathUrl3 = 
  •         // TestMain.class.getClassLoader().getResource("beans_sameLocation.xml"); 
  •  
  •         // 在根寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl4 = TestMain.class.getClassLoader().getResource("beans.xml"); 
  •  
  •         // 在不同包内寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl5 = TestMain.class.getClassLoader().getResource("test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 3:使用ClassLoader类的getSystemResource()方法 
  •         // 在指定包内寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl6 = ClassLoader.getSystemResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •         // 同上 
  •         URL filePathUrl7 = ClassLoader.getSystemClassLoader().getResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •  
  •         // 在根寻找,指定相对路径,其他均返回null。 
  •         URL filePathUrl8 = ClassLoader.getSystemResource("beans.xml"); 
  •         // 同上 
  •         URL filePathUrl9 = ClassLoader.getSystemClassLoader().getResource("beans.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 4:使用Thread加载资源(推荐此方法) 
  •         // 在指定包内寻找资源,(相对路径),其他均返回null。 
  •         filePathUrl6 = Thread.currentThread().getContextClassLoader().getResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •  
  •         // 在根寻找,(相对路径),其他均返回null。 
  •         filePathUrl7 = Thread.currentThread().getContextClassLoader().getResource("beans.xml"); 
  •  
  •         // 在不同包内寻找资源,(相对路径),其他均返回null。 
  •         filePathUrl8 = Thread.currentThread().getContextClassLoader().getResource("test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •  
  •         System.out.println(filePathUrl1.getFile()); 
  •         System.out.println(filePathUrl2.getFile()); 
  •         System.out.println(filePathUrl3.getFile()); 
  •         System.out.println(filePathUrl4.getFile()); 
  •         System.out.println(filePathUrl5.getFile()); 
  •         System.out.println(filePathUrl6.getFile()); 
  •         System.out.println(filePathUrl7.getFile()); 
  •         System.out.println(filePathUrl8.getFile()); 
  •         System.out.println(filePathUrl9.getFile()); 
  •         System.out.println("----------------------------------------------------------------------------------------"); 
  •         System.getProperties().list(System.out); 
  •         System.out.println("----------------------------------------------------------------------------------------"); 
  •  
  •         ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); 
  •         Animal animal = (Animal) ac.getBean("animal"); 
  •         System.out.println(animal.speak()); 
  •         animal.setAge(88); 
  •  
  •         Animal animal0 = (Animal) ac.getBean("animal"); 
  •         System.out.println(animal0.speak()); 
  •  
  •         ApplicationContext ac1 = new ClassPathXmlApplicationContext("beans.xml"); 
  •         Animal animal1 = (Animal) ac1.getBean("animal"); 
  •         System.out.println(animal1.speak()); 
  •     } 

  •  import java.net.URL; 
  •  
  • import org.springframework.context.ApplicationContext; 
  • import org.springframework.context.support.ClassPathXmlApplicationContext; 
  •  
  • public class TestMain { 
  •     public static void main(String[] args) { 
  •  
  •         // ############################################################################################################ 
  •         // 1:使用本类的Class类的getResource()方法 
  •         // 在当前包寻找资源(指定相对路径,其他均返回null。) 
  •         URL filePathUrl1 = TestMain.class.getResource("beans_sameLocation.xml"); 
  •  
  •         // 在根寻找资源(需要文件分隔符"/",其他均返回null。) 
  •         URL filePathUrl2 = TestMain.class.getResource("/beans.xml"); 
  •  
  •         // 在不同包内寻找资源(指定相对路径(需要文件分隔符"/"),其他均返回null。) 
  •         URL filePathUrl3 = TestMain.class.getResource("/test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 2:使用本类的Class类的ClassLoader类的getResource()方法 
  •         // 在相同包内寻找资源,总是返回null。 
  •         // URL filePathUrl3 = 
  •         // TestMain.class.getClassLoader().getResource("beans_sameLocation.xml"); 
  •  
  •         // 在根寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl4 = TestMain.class.getClassLoader().getResource("beans.xml"); 
  •  
  •         // 在不同包内寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl5 = TestMain.class.getClassLoader().getResource("test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 3:使用ClassLoader类的getSystemResource()方法 
  •         // 在指定包内寻找资源,指定相对路径,其他均返回null。 
  •         URL filePathUrl6 = ClassLoader.getSystemResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •         // 同上 
  •         URL filePathUrl7 = ClassLoader.getSystemClassLoader().getResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •  
  •         // 在根寻找,指定相对路径,其他均返回null。 
  •         URL filePathUrl8 = ClassLoader.getSystemResource("beans.xml"); 
  •         // 同上 
  •         URL filePathUrl9 = ClassLoader.getSystemClassLoader().getResource("beans.xml"); 
  •  
  •         // ############################################################################################################ 
  •         // 4:使用Thread加载资源(推荐此方法) 
  •         // 在指定包内寻找资源,(相对路径),其他均返回null。 
  •         filePathUrl6 = Thread.currentThread().getContextClassLoader().getResource("test/spring/beanpost/beans_sameLocation.xml"); 
  •  
  •         // 在根寻找,(相对路径),其他均返回null。 
  •         filePathUrl7 = Thread.currentThread().getContextClassLoader().getResource("beans.xml"); 
  •  
  •         // 在不同包内寻找资源,(相对路径),其他均返回null。 
  •         filePathUrl8 = Thread.currentThread().getContextClassLoader().getResource("test/spring/beanpost/file/beans_diffLocation.xml"); 
  •  
  •         // ############################################################################################################ 
  •  
  •         System.out.println(filePathUrl1.getFile()); 
  •         System.out.println(filePathUrl2.getFile()); 
  •         System.out.println(filePathUrl3.getFile()); 
  •         System.out.println(filePathUrl4.getFile()); 
  •         System.out.println(filePathUrl5.getFile()); 
  •         System.out.println(filePathUrl6.getFile()); 
  •         System.out.println(filePathUrl7.getFile()); 
  •         System.out.println(filePathUrl8.getFile()); 
  •         System.out.println(filePathUrl9.getFile()); 
  •         System.out.println("----------------------------------------------------------------------------------------"); 
  •         System.getProperties().list(System.out); 
  •         System.out.println("----------------------------------------------------------------------------------------"); 
  •  
  •         ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); 
  •         Animal animal = (Animal) ac.getBean("animal"); 
  •         System.out.println(animal.speak()); 
  •         animal.setAge(88); 
  •  
  •         Animal animal0 = (Animal) ac.getBean("animal"); 
  •         System.out.println(animal0.speak()); 
  •  
  •         ApplicationContext ac1 = new ClassPathXmlApplicationContext("beans.xml"); 
  •         Animal animal1 = (Animal) ac1.getBean("animal"); 
  •         System.out.println(animal1.speak()); 
  •     } 
  • java 加载资源文件方式

    我们有很多方法加载资源文件,比如用ClassLoader.getResourceAsStream、ClassLoader.getSystemResourceAsStream或者Class.getRes...
    • zhouzhanghe1
    • zhouzhanghe1
    • 2013年11月27日 16:40
    • 747

    java加载资源文件方式总结

    在java中,加载文件资源可用如下四种方式:    1、通过本类的class类的getResource方法  // 同一包下 URL u0 = ClassGetResourceTest.clas...
    • zhoutaohenan
    • zhoutaohenan
    • 2013年01月05日 09:25
    • 7275

    反射第六步 : 通过反射加载资源文件 三种方式

    package cn.sdut.reflectclass; import java.io.FileInputStream; import java.io.IOException; import ja...
    • zxc_helloworld
    • zxc_helloworld
    • 2017年08月21日 11:48
    • 212

    js的几种加载方式

    正常情况下,脚本元素会阻止下载页面内容,直到这个脚本文件下载解析并执行完毕。无阻塞地下载可以通过一些模式来防范阻塞下载的问题: 使用XHR请求载入脚本,并使用eval()将其转换为字符串。 但是这种...
    • crystal6918
    • crystal6918
    • 2017年03月02日 11:57
    • 273

    几种类加载方式的区别

    虚拟机加载类的途径:  1、Dog dog = new Dog();  这个动作会导致常量池的解析,Dog类被隐式装载。  如果当前ClassLoader无法找到Dog,则抛出NoClass...
    • hengfanz
    • hengfanz
    • 2014年04月15日 15:03
    • 1128

    javaweb中关于读取资源文件三种方式

    1.      假设要读取的1.txt文件在web工程的src目录下: 我们可以采取class对象.getResource(filename).getFile()的方式得到1.txt的磁盘绝对路径 ...
    • sannian1314
    • sannian1314
    • 2014年02月17日 22:42
    • 2634

    java调用dll几种方式总结

    常用的就是jni,jnative(基于jni封装了自己的jar包) 注意:java调用dll,必须dll里做了对应的处理。列如:方法名必须为_java_包名_类名_方法名使用JNI调用dll步骤 新...
    • shenjixiang
    • shenjixiang
    • 2017年11月28日 23:01
    • 142

    java加载jar包下的资源文件过程及原理分析

    最近遇到一个这样的问题,项目是一个spring cloud的项目,一个主模块(记为mainMoudle)依赖了另一个子模块(记为subMoudle)。在开发过程中,在idea开发工具环境下是能正常运行...
    • puhaiyang
    • puhaiyang
    • 2017年08月19日 13:41
    • 1725

    java从类路径下加载资源文件

    java的世界离不开资源配置文件,像spring框架等都非常依赖资源配置文件,而且spring也封装了resource类,来处理资源文件的加载,这里就不仔细分析spring加载资源文件了,主要分析下j...
    • doctor_who2004
    • doctor_who2004
    • 2015年11月22日 18:26
    • 1446

    java中反射机制及其类加载的几种方式的异同

    一、Java中反射机制总结: 反射的定义:通过反射,把Java类中的各个组成部分映射到相应的Java类 反射的优点: 1. 减少对象的依赖,调用方法更灵活,改变属性的值。 2. 通过class对象得...
    • u013318475
    • u013318475
    • 2015年02月15日 23:55
    • 2187
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:java加载资源文件的几种方式
    举报原因:
    原因补充:

    (最多只允许输入30个字)