Java加载资源文件几种方法

from: 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());
    }
} 
时间: 2024-10-15 01:23:26

Java加载资源文件几种方法的相关文章

java加载资源文件

className.class.getResourceAsStream 用法: 第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties 那么,应该有如下代码: //前面没有"/"代表当前类的目录 InputStream is1 = Test.class.getResourceAsStream("config.properties"); System.out.printl

java加载properties文件的六种方法总结

java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类: >一种是通过import java.util.Properties类中的load(InputStream in)方法加载: >另一种是通过import java.util.ResourceBundle类的getBundle(String baseName)方法加载. 注意:一定要区分路径格式 实现代码如下: 1 2 3 4 5

java加载properties文件的六中基本方式实现

java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过import java.util.ResourceBundle类的getBundle(String baseName)方法加载. 注意:一定要区分路径格式 实现代码如下: 1 package com.util; 2 3 import java.io.FileInputStream; 4 import jav

通过类加载器加载资源文件

/*******************************************第一种方法***************************************************************/ public class Demo {    //资源文件可以通过类加载器的方式加载到内存中,这种方式的好处是程序不用明确制定配置文件的具体所在目录.程序可以自动的在    //src目录下搜索该文件,并加载    //采用下面这种方法还有一种弊端,就是,通过类加载器加载

Spring boot 国际化自动加载资源文件问题

Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义正确的资源文件路径,Spring boot就启动时就会自动加载资源. spring.messages.basename=i18n/message 但是我的项目修改后获取消息时系统报错,找不到对应语言的资源配置.于是试图找到原因.Google好久都没找到,简直好像就我一个人遇到这鬼问题一样??.只好自

js 动态加载事件的几种方法总结

本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用. 方法一.setAttributevar obj = document.getElementById("obj");obj.setAttribute("onclick", "javasc

JavaScript实现判断图片是否加载完成的3种方法整理

JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示效果.本文主要整理了几种常见的javascipt判断图片加载完成时的方法,并通过代码与实际应用相结合进行解释与说明. onload方法 通过向img标签添加onload属性,并填入相应的函数来执行后续的javascipt代码.如下代码例子中img元素默认是不显示的,通过onload判断加载完成后再将

动态加载资源文件(ResourceDictionary)

原文:动态加载资源文件(ResourceDictionary) 在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式: 1.在项目的启动文件App中<Application.Resources>里添加相应的样式内容,当然也可以在控件所在的控件的资源(如:<UserControl.Resources>)中添加相应样式内容 2.通过后台代码向当前程序的资源中动态添加,代码如下:(TextBlockStyle.xaml是一个ResourceDicti

加载 AssetBundle 的四种方法

[加载 AssetBundle 的四种方法] 1.AssetBundle.LoadFromMemoryAsync(byte[] binary, uint crc = 0); 返回AssetBundleCreateRequest.Use assetBundle property to get an AssetBundle once it is loaded. Compared to LoadFromMemory, this version will perform AssetBundle deco