-
패키지 test.bwl;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
java.util.Properties 가져오기;
공개 클래스 테스트 {
개인 정적 속성 속성 = 새 속성();
공개 정적 무효 메인(String[] args) {
노력하다 {
InputStream is = Test.class.getClassLoader().getResourceAsStream("cache.properties");
속성.로드(is);
문자열 크기 = Properties.getProperty("cache.size");
writeLog("配置成功!" + size);
} 잡기(FileNotFoundException e) {
writeLog("配置文件不存재!" + e.getMessage());
} 잡기(IOException e) {
writeLog("读取配置文件IO错误!" + e.getMessage());
}
}
공공 정적 무효 writeLog(문자열 strLog) {
System.out.println(strLog);
}
}
패키지 test.bwl;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
java.util.Properties 가져오기;
공개 클래스 테스트 {
개인 정적 속성 속성 = 새 속성();
공개 정적 무효 메인(String[] args) {
노력하다 {
InputStream is = Test.class.getClassLoader().getResourceAsStream("cache.properties");
속성.로드(is);
문자열 크기 = Properties.getProperty("cache.size");
writeLog("配置成功!" + size);
} 잡기(FileNotFoundException e) {
writeLog("配置文件不存재!" + e.getMessage());
} 잡기(IOException e) {
writeLog("读取配置文件IO错误!" + e.getMessage());
}
}
공공 정적 무효 writeLog(문자열 strLog) {
System.out.println(strLog);
}
}
패키지 test.bwl;
java.io.파일 가져오기;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
java.util.HashMap 가져오기;
java.util.Map 가져오기;
java.util.Properties 가져오기;
import java.util.regex.Pattern;
/**
* 配置信息管리器
*
* @author bwl
* @버전 1.0
*/
공개 클래스 ConfigManager {
/**
* 提供单例对象的静态内부类
*/
개인 정적 클래스 SingletonHolder {
공개 정적 ConfigManager 인스턴스 = 새 ConfigManager();
}
/**
* 获取对象实例
* @반품
*/
공개 정적 ConfigManager getInstance() {
SingletonHolder.instance를 반환합니다.
}
/**
* 存储问题列表의 지도
*/
개인 맵<문자열, 속성> name2properties;
/**
* 사용 방법, getInstance()를 사용하는 방법
*/
개인 구성 관리자() {
name2properties = Collections.synchronizedMap(new HashMap<String, Properties>());
doInit();
}
/**
* 初始화방법
*/
개인 무효 doInit() {
노력하다 {
파일 경로 = new File("./conf/");
if (!path.exists()) {
System.out.println("ConfilgManager 초기화 오류: src 파일 아래에 'conf'라는 폴더가 없습니다.");
반품;
}
File[] confFiles = path.listFiles(new DirFilter(".*\.properties"));//\
for (int i = 0; i < confFiles.length; i++) {
파일 f = confFiles[i];
if (f.exists() && f.isFile()) {
속성 속성 = 새 속성();
InputStream은 = new FileInputStream(f);
속성.로드(is);
name2properties.put(f.getName(), 속성);
}
}
} 잡기(FileNotFoundException e) {
e.printStackTrace();
} 잡기(IOException e) {
e.printStackTrace();
}
}
/**
* 获取配置项的值
* @param fileName 配置文件의 이름
* @param 키 关键码的值
* @return 配置项
*/
공개 문자열 getProperty(문자열 파일 이름, 문자열 키) {
if (fileName == null || fileName.length() == 0) {
null을 반환;
}
속성 prop = name2properties.get(fileName);
if (prop != null) {
return prop.getProperty(key);
}
null을 반환;
}
/**
* 获取整형의 配置项的值
* @param fileName 配置文件의 이름
* @param keyName 关键码的值
* @return 如果正确则返回数字,否则返回-1
*/
public int getIntProperty(String fileName, String key) {
문자열 값 = this.getProperty(fileName, key);
정수 결과 = -1;
if (값 == null) {
결과 반환;
}
노력하다 {
결과 = Integer.parseInt(value);
결과 반환;
} 잡기(예외 e) {
//아무것도 하지 않음
}
결과 반환;
}
/**
* 过滤属性文件的内部类
*/
DirFilter 클래스는 FilenameFilter를 구현합니다.
/**
* 记录文件name格式的正则对象
*/
프라이빗 패턴 패턴;
공개 DirFilter(문자열 정규식) {
패턴 = Pattern.compile(regex);
}
public boolean accept(파일 디렉토리, 문자열 이름) {
return Pattern.matcher(new File(name).getName()).matches();
}
}
공개 정적 무효 메인(String[] args) {
ConfigManager 구성 = ConfigManager.getInstance();
System.out.println(config.getIntProperty("cache.properties", "cache.size") + "");
System.out.println(config.getProperty("javagroups.properties", "bus_name") + "");
}