파일이 특정 경로에 파일 갯수가 fix가 되어 있으면 상관은 없지만 , 만약 해당 디렉토리 밑으로
서브 디렉토리 또는 파일이 주기적으로 쌓인 다면 ,즉 다이나믹하게 디렉토리 및 파일이
생성된다면 구현이 쉽지가 않을 것입니다.이럴 경우 쉽고 유용하게 스프링에서 제공 하는
클래스가 있습니다.
클래스 이름은 PathMatchingResourcePatternResolver 입니다.
API (http://static.springsource.org/spring/docs/2.5.6/api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html)
이 클래스를 사용하면 Ant-style Patterns 패턴으로 파일을 searching 할 수 있습니다.
실제로 스프링에서는 이클래스를 사용해서 xml에 정의된 파일을 파싱해서 빈 으로 등록 합니다.
(패턴 예)
/WEB-INF/*-context.xml
com/mycompany/**/applicationContext.xml
file:C:/some/path/*-context.xml
classpath:com/mycompany/**/applicationContext.xml
Example Use Case :
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.Resource;
public class SearchFiles {
public static void main(String[] ars) throws Exception {
Resource[] resources;
PathMatchingResourcePatternResolver prcrr;
int resourceCnt;
resourceCnt = 0;
prcrr = new PathMatchingResourcePatternResolver();
//ant style matching..
resources = prcrr.getResources("classpath:app/**/*.xml");
if (resources != null) {
resourceCnt = resources.length;
for (int loopCnt = 0; loopCnt < resourceCnt; loopCnt++) {
System.out.println("== " + resources[loopCnt].getFilename() + " ==");
}
}
}
}
Result :
== a.xml ==
== xx.xml ==
만약 스프링이 아닌 프레임웍 (스트럿츠,Webwork) 또는 core 자바로 사용할 경우spring-core.jar,commons-logging.jar 두 개 라이브러리 참조 하시면 됩니다.
댓글 없음:
댓글 쓰기