>  기사  >  Java  >  Java 프로그램이 속성 구성 파일을 읽는 방법에 대한 자세한 설명

Java 프로그램이 속성 구성 파일을 읽는 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-12 10:32:351070검색

우리가 일반적으로 프로그램을 작성할 때 일부 매개변수는 자주 변경되며 이러한 변경은 우리가 예측하는 것이 아닙니다. 예를 들어, 우리는 개발 중에 로컬 데이터베이스에 연결하므로 데이터 운영을 위한 이 모듈을 만들기 위해 IP, 데이터베이스 이름, 테이블 이름, 데이터베이스 호스트 및 기타 정보가 로컬에 있습니다. , 그러면 위의 정보를 프로그램에 쓸 수 없습니다. 일반적으로 우리의 접근 방식은 구성 파일을 사용하여 문제를 해결하는 것입니다.
각 언어마다 지원되는 구성 파일 형식이 있습니다. 예를 들어 Python은 .ini 파일을 지원합니다. .ini 파일 읽기 및 쓰기를 지원하는 내부 ConfigParser 클래스가 있기 때문에 프로그래머는 이 클래스에서 제공하는 메서드에 따라 .ini 파일을 자유롭게 조작할 수 있습니다. Java에서 Java는 .properties 파일 읽기 및 쓰기를 지원합니다. JDK에 내장된 java.util.Properties 클래스는 .properties 파일을 조작하는 데 편리함을 제공합니다.

1. .properties 파일 형식

# 以下为服务器、数据库信息
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
# 以下为数据库表信息
dbTable = mytable
# 以下为服务器信息
ip = 192.168.0.9

위 파일에서는 파일 이름이 test.properties 파일이라고 가정합니다. 그중 #으로 시작하는 줄은 주석 정보이고, 등호 "="의 왼쪽에 있는 줄은 키(key)라고 하고, 등호 "="의 오른쪽에 있는 줄은 값(value)이라고 합니다. (실제로 우리는 이것을 종종 키-값 쌍이라고 부릅니다.) key는 우리 프로그램에서 변수여야 합니다. 값은 실제 상황에 따라 구성됩니다.

2. JDK의 속성 클래스

Properties 클래스는 Java.util에 존재합니다. 이 클래스는 여러 가지 주요 메서드를 제공하는 Hashtable에서 상속됩니다.
1. getProperty(String key), 지정된 키를 사용하여 이 속성 목록에서 속성을 검색합니다. 즉, 매개변수 키를 통해 키에 해당하는 값을 얻는다.
2. load(InputStream inStream)는 입력 스트림에서 속성(키 및 요소 쌍) 목록을 읽습니다. 파일을 로드하여 지정된 파일(예: 위의 test.properties 파일)에서 모든 키-값 쌍을 가져옵니다. getProperty(문자열 키)로 검색합니다.
3. setProperty(문자열 키, 문자열 값), Hashtable 메소드 put을 호출합니다. 기본 클래스의 put 메소드를 호출하여 키-값 쌍을 설정합니다.
4. store(OutputStream out,String comments)는 이 Properties 테이블의 속성(키 및 요소 쌍) 목록을 load 메서드를 사용하여 Properties 테이블에 로드하는 데 적합한 형식으로 출력 스트림에 씁니다. 로드 방법과 달리 이 방법은 지정된 파일에 키-값 쌍을 씁니다.
5. Clear()는 로드된 모든 키-값 쌍을 지웁니다. 이 메서드는 기본 클래스에서 제공됩니다.
위의 방법으로 .properties 파일을 조작할 수 있습니다!

3. Java 읽기 속성 파일 예
다음 내용이 포함된 box.properties 속성 파일이 있습니다.

Color=Red
Name=Box
Length=18
Width=7
Heigth=8

속성 값의 경우 다음 코드를 사용할 수 있습니다.

InputStream in = null;
Properties p = new Properties();
try {
  in = new BufferedInputStream(new FileInputStream("box.properties"));
  p.load(in);
} catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
Enumeration<Object> 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));
  }
}

자세한 내용 Java 프로그램에서 속성 구성 파일을 읽는 방법에 대한 관련 기사는 PHP 중국어 웹 사이트를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.