JAVA 마법 당:. properties 프로필 읽 기

8209 단어 properties
머리말
  자바 프로젝트 에서 log4j, 데이터베이스 연결 등 설정 정 보 는 일반적으로. properties 파일 에 쓰 여 있 습 니 다. 이 설정 정 보 를 어떻게 읽 습 니까?다음은 관련 방법 을 기록 하여 나중에 찾 아 볼 수 있 도록 하 겠 습 니 다.
 
2. properties 파일
  파일 의 하 나 를 설정 합 니 다. 내용 은 키 쌍 으로 존재 하 며, 키 쌍 마다 한 줄 을 독점 합 니 다. \ #번 호 는 줄 주석 의 시작 표지 로 서 중국어 주석 은 자동 으로 유 니 코드 인 코딩 을 진행 합 니 다.예시:
# ip and port of server socket
ip=127.0.0.1
port=9999
# error message
msg=I'm sorry, bye bye!

  상기 내용 이 config. properties 파일 에 저장 되 고 bin 디 렉 터 리 결 과 는 다음 과 같다 고 가정 합 니 다.
  bin
    |-- main
        |-- Demo.class
    |-- config.properties
   후속 장절 의 예 는 상술 한 내용 을 목표 대상 으로 조작 할 것 이다.
 
통과 속성 대상 조작 하 다. 
  속성 읽 기, 예제:
public class Demo{
  public static void main(String[] args){
    Properties props = new Properties();
    
    InputStream in = Demo.class.getResourceAsStream("../config.properties");

    //         (   ),         bin
    //InputStream in = new FileInputStream("./config.properties");

    props.load(in);
in.close();
// String key = "ip"; String ip = props.getProperty(key); // Set keys = props.keySet(); for (Interator it = keys.iterator(); it.hasNext();){ String k = it.next(); System.out.println(k + ":" + props.getProperty(k)); } // Enumeration en = props.propertyNames(); while (en.hasMoreElements()){ String k = en.nextElement(); System.out.println(k + ":" + props.getProperty(k)); } } }

   1. 통과 Demo.class.getResourceAsStream("../config.properties"); 프로필 을 읽 습 니 다. 프로필 의 상대 경 로 는 클래스 파일 이 있 는 디 렉 터 리 를 현재 디 렉 터 리 로 합 니 다.
   2. 통과 new FileInputStream("./config.properties"); 프로필 을 읽 습 니 다. 파일 의 상대 경 로 를 작업 디 렉 터 리 로 설정 할 수 있 습 니 다. System.getProperty("user.dir") 현재 디 렉 터 리 로 작업 디 렉 터 리 가 져 오기)
   메모: 상기 두 가지 방식 으로 가 져 온 프로필 은 모두 캐 시 되 지 않 았 습 니 다.매번 프로필 을 다시 불 러 옵 니 다.
  속성 쓰기, 예시:
Properties props = new Properties();
InputStream in = getClass().getResouceAsStream("properties                 ");
props.load(in);

OutputStream output = new FileOutputStream("properties    ");
props.setProperty("ip", "10.248.112.123"); //           
props.store(output, "modify ip value"); // store(OutputStream output, String comment)          
output.close()

 
통과 리 소스 번 들 대상 조작 하 다.
  이 방식 을 통 해 프로필 만 읽 을 수 있 을 뿐 쓰기 동작 을 할 수 없습니다.예시:
// ResourceBundle rb = ResourceBundle.getBundle("                (     )");
ResourceBundle rb = ResourceBundle.getBundle("config");
try{
    String name = rb.getString("name");
}
catch(MissingResourceException ex){

메모: 상기 방식 은 설정 파일 정 보 를 캐 시 합 니 다. 나중에 읽 을 때 캐 시 에 있 는 내용 을 읽 습 니 다. 이 기간 에 설정 내용 을 수정 하면 실시 간 으로 동기 화 할 수 없습니다.
리 소스 번 들 은 두 개의 하위 클래스 인 ListResource Bundle 과 Property Resource Bundle 이 있 는데, properties 파일 을 읽 을 때 실제로는 Property Resource Bundle 을 사용 하여 처리한다.
별말:
  리 소스 번 들 은 주로 국제 화 와 현지 화 문 제 를 해결 하 는 데 쓰 인 다.자원 이름 을 통 해 각 언어 와 방언 정 보 를 정의 합 니 다. 프로그램 이 실 행 될 때 현재 현지 화 정 보 를 얻 고 현지 화 정보 에 따라 해당 하 는 자원 을 불 러 와 현지 화 를 완성 합 니 다.
  자원 이름 규칙:
//      
MyResource

//        
MyResource_en

//
MyResource_en_US

  대응 하 는 자바 코드:
// ResourceBundle                     (       MyResource_zh_CN),        MyResource_zh,      MyResource。
ResourceBundle rb = ResourceBundle.getBundle("MyResource", Locale.getDefault())

 
총화
  물론 방식 은 이것 뿐만 이 아 닙 니 다. 앞으로 계속 보충 하 세 요!
  오리지널 을 존중 합 니 다.  ^_^뚱보 존
 
참고
http://www.cnblogs.com/panjun-Donet/archive/2009/07/17/1525597.html

좋은 웹페이지 즐겨찾기