通过配置文件applicationContext.xml去进行Resource资源读取
定义一个专门负责资源处理的程序:
package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtil {
private Resource src ; // 此资源将通过Spring的配置文件管理注入
public void setSrc(Resource src) {
this.src = src;
}
public void print() throws Exception { // 直接输出资源的内容
if (this.src.exists()) { // 表示该资源存在
Scanner scan = new Scanner(this.src.getInputStream()) ;
scan.useDelimiter(" ") ;
while (scan.hasNext()) {
System.out.println(scan.nextLine());
}
scan.close();
}
}
}
配置applicationContext.xml文件
读取CLASSPATH资源:
<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="classpath:applicationContext.xml"/>
</bean>
读取网络资源
<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="http://www.baidu.com"/>
</bean>
读取文件资源
<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="file:/etc/hosts"/>
</bean>
测试程序:
package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtil;
public class ResourceDemo03 {
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ResourceUtil ru = ctx.getBean("resourceUtil", ResourceUtil.class);
ru.print();
}
}
通过配置文件applicationContext.xml去进行多个Resource资源读取
定义一个专门负责资源处理的程序:
package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtils {
private Resource src[]; // 此资源将通过Spring的配置文件管理注入
public void setSrc(Resource[] src) {
this.src = src;
}
public void print() throws Exception { // 直接输出资源的内容
for (int x = 0; x < this.src.length; x++) {
if (this.src[x].exists()) { // 表示该资源存在
System.out.println(this.src[x].getFilename() + ":");
Scanner scan = new Scanner(this.src[x].getInputStream());
scan.useDelimiter(" ");
while (scan.hasNext()) {
System.out.println(scan.nextLine());
}
scan.close();
}
System.out.println("**********************************");
}
}
}
配置applicationContext.xml文件
<bean id="resourceUtils" class="cn.liang.util.ResourceUtils">
<property name="src">
<array>
<value>classpath:applicationContext.xml</value>
<value>http://www.baidu.com</value>
<value>file:/etc/hosts</value>
</array>
</property>
</bean>
测试程序:
package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtils;
public class ResourceDemo04 {
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ResourceUtils ru = ctx.getBean("resourceUtils", ResourceUtils.class);
ru.print();
}
}
Resource通配符
- 最常见的资源文件就是“*.properties”文件
- Resource处理资源时支持三种通配符
- ?:匹配任意一位字符
- test-? --匹配test-1、test-2、test-x
- *:匹配任意多位字符
- a/*/test --表示在a这个父目录中一级子目录下所有的test文件
- **:匹配任意多级目录的字符串内容
- a/**/test --表示不管什么目录下的指定名称文件都进行匹配
定义一个专门负责资源处理的程序:
package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtils {
private Resource src[]; // 此资源将通过Spring的配置文件管理注入
public void setSrc(Resource[] src) {
this.src = src;
}
public void print() throws Exception { // 直接输出资源的内容
for (int x = 0; x < this.src.length; x++) {
if (this.src[x].exists()) { // 表示该资源存在
System.out.println(this.src[x].getFilename() + ":");
Scanner scan = new Scanner(this.src[x].getInputStream());
scan.useDelimiter(" ");
while (scan.hasNext()) {
System.out.println(scan.nextLine());
}
scan.close();
}
System.out.println("**********************************");
}
}
}
配置applicationContext.xml文件
<bean id="resourceUtils" class="cn.liang.util.ResourceUtils">
<property name="src">
<array>
<value>classpath:**/LICENSE*</value>
</array>
</property>
</bean>
测试程序:
package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtils;
public class ResourceDemo04 {
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ResourceUtils ru = ctx.getBean("resourceUtils", ResourceUtils.class);
ru.print();
}
}
文件部署:
localhost:main liang$ tree resources/
resources/
├── applicationContext.xml
├── file1
│ └── LICENSE.txt
├── file2
│ ├── LICENSE-1.txt
│ └── LICENSE-2.txt
├── file3
│ └── file3-1
│ └── LICENSE-x.txt
└── log4j.properties
输出结果:
LICENSE.txt:
test null
**********************************
LICENSE-1.txt:
test 01
**********************************
LICENSE-2.txt:
test 02
**********************************
LICENSE-x.txt:
test x
**********************************