우리가 프로그램을 작성할 때, 일부 매개 변수는 종종 변경되지만이 변경은 우리가 예측하는 것이 아닙니다. 예를 들어, 데이터베이스를 작동하는 모듈을 개발했습니다. 개발 중에 로컬 데이터베이스에 연결하고 IP, 데이터베이스 이름, 테이블 이름, 데이터베이스 호스트 및 기타 정보는 로컬입니다. 데이터를 범용으로 작동시키는 모듈을 만들기 위해 위의 정보는 프로그램에 작성할 수 없습니다. 일반적으로 우리의 접근 방식은 구성 파일을 사용하여 해결하는 것입니다.
다양한 언어에는 자체 지원 구성 파일 유형이 있습니다. 예를 들어, Python은 .ini 파일을 지원합니다. .ini 파일의 읽기 및 쓰기를 지원하기위한 Configparser 클래스가 있으므로 프로그래머는이 클래스에서 제공 한 방법에 따라 .ini 파일을 자유롭게 작동 할 수 있습니다. Java에서 Java는 .properties 파일의 읽기 및 쓰기를 지원합니다. 내장 Java.util.properties jdk 클래스는 .properties 파일을 작동하는 데 편의를 제공합니다.
하나. .properties 파일 양식
# 다음은 서버 및 데이터베이스 정보 DBPORT = LOCALHOST DATABASENAME = MYDB DBUSERNAME = ROT DBPASSWORD = ROT # 데이터베이스 테이블 정보 DBTABLE = MYTABLE # 서버 정보 IP = 192.168.0.9입니다.
위 파일에서 파일 이름이 test.properties 파일이라고 가정합니다. #의 첫 번째 행동은 정보를 언급합니다. 동일 부호의 왼쪽에서 "="우리는 그것을 키라고 부릅니다. 동일 부호의 오른쪽에서 "="우리는 그것을 값이라고 부릅니다. (실제로, 우리가 자주 키 값 쌍이라고 부르는 것입니다) 키는 프로그램의 변수 여야합니다. 값은 실제 상황에 따라 구성됩니다.
둘. JDK의 속성 클래스
특성 클래스는 hashtable에서 상속되는 셀 Java.util에 존재하며 몇 가지 주요 방법을 제공합니다.
1. GetProperty (String Key), 지정된 키가있는이 속성 목록의 속성을 검색하십시오. 즉, 매개 변수 키를 통해 키에 해당하는 값을 얻습니다.
2. LOAD (InputStream Instream)는 입력 스트림에서 속성 목록 (키 및 요소 쌍)을 읽습니다. 지정된 파일을로드하여 파일에서 모든 키 값 쌍을 가져옵니다 (예 : 위의 Test.Properties 파일). getProperty (문자열 키)의 경우 검색합니다.
3. setProperty (문자열 키, 문자열 값), 호출 해시 테이블 메서드 풋. 기본 클래스의 PUT 메소드를 호출하여 값 키 값 쌍을 설정합니다.
4. 저장 (outputStream out, String Comments),이 속성 테이블의 속성 목록 (키 및 요소 쌍)을로드 메소드를 사용하여 속성 테이블에로드하는 데 적합한 형식의 출력 스트림에 기록합니다. 로드 방법과 달리이 방법은 지정된 파일에 키 값 쌍을 씁니다.
5. CLEAR (), 모든로드 된 키 값 쌍을 지우십시오. 이 방법은 기본 클래스에 제공됩니다.
위의 방법으로 .properties 파일에서 작동 할 수 있습니다!
3. Java 읽기 속성 파일 예제
다음 내용이 포함 된 속성 파일 Box.properties가 있습니다.
color = redname = boxlength = 18Width = 7Heigth = 8입니다
속성 값을 얻으려면 다음 코드를 사용할 수 있습니다.
inputStream in = null; 속성 p = new Properties (); try {in = new bufferedInputStream (new FileInputStream ( "box.properties")); p.load (in);} catch (filenotfoundException e) {// todo 자동 생성 캐치 블록 e.printstacktrace ();} catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace ();} enumeration <bood> keys = p.keys (); while (keys.hasmoreElements ()) {String key = (string) keys.nextElement (); System.out.println (key + ":" + p.getProperty (key));}또는:
inputStream in; resourceBundle rb = null; try {in = new bufferedInputStream (new FileInputStream ( "box.properties")); rb = new PropertyResourceBundle(in);} catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace();} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();}if (rb != null) { Enumeration<String> keys = rb.getKeys (); while (keys.hasmoreElements ()) {String key = (string) keys.nextElement (); System.out.println (key + ":" + rb.getstring (key)); }}그러나 출력 순서는 원본 파일과 다릅니다.