在Web项目中加载资源文件的特别之处在于其加载资源文件不能采用绝对路径,必须根据项目 根路径来取的,针对如此特殊之处,在加载Web中的资源文件可以采取以下两种方式:
1、MessageResources
MessageResources可以根据项目的根路径来取得资源文件信息,只要propertes文件位于项目根路径下就可以取得。
- MessageResources ms = MessageResources.getMessageResources("beanConfig");
- System.out.println(ms.getMessage("msg"));
getMessage()方法是根据资源文件中的key取得相应的value。例子的资源文件位于项目Src目录下,如果还有更深的路径可以采用XXX.beanConfig或者XXX/beanConfig之类的。
2、采用Properties来获取本地Resource
这种方式通过ClassPathResource来加载一个项目本地化文件,然后获取到其绝对路径,再通过Properties类load File的方式来读取。
- Resource resource = new ClassPathResource("config/beanConfig.properties");
- String path = resource.getURI().getPath();
- Properties p= new Properties();
- p.load(new FileInputStream(new File(path)));
- String str = p.getProperty("msg");
- System.out.println(str);
这两种方式的区别在于前者是Message加载方式,当找不到文件时返回的是null;后则采用的是IO方式,当找不到文件时会抛出异常。