[java] Java 특성 파일을 사용하는 방법은 무엇입니까?

Java 특성 파일로 저장하고 나중에로드하고 반복하려는 구성 값의 키 / 값 쌍 목록이 있습니다.

질문 :

  • 파일을로드 할 클래스와 동일한 패키지에 파일을 저장해야합니까, 아니면 파일을 배치해야하는 특정 위치가 있습니까?
  • 파일이 특정 확장자로 끝나야합니까, 아니면 .txt괜찮습니까?
  • 코드에서 파일을로드하는 방법
  • 그리고 내부의 값을 어떻게 반복 할 수 있습니까?


답변

InputStream을 속성에 전달할 수 있으므로 파일이 거의 모든 곳에서 호출 될 수 있습니다.

Properties properties = new Properties();
try {
  properties.load(new FileInputStream("path/filename"));
} catch (IOException e) {
  ...
}

다음과 같이 반복하십시오.

for(String key : properties.stringPropertyNames()) {
  String value = properties.getProperty(key);
  System.out.println(key + " => " + value);
}


답변

  • 원하는 위치 에 파일을 저장할 수 있습니다 . jar 파일에 보관하려면 사용 Class.getResourceAsStream()하거나 ClassLoader.getResourceAsStream()액세스해야합니다. 파일 시스템에 있으면 약간 더 쉽습니다.

  • 내 경험에서 .properties가 더 일반적이지만 모든 확장은 괜찮습니다.

  • 사용하여 파일을로드 Properties.load전달, InputStream또는 StreamReader자바 6을 사용하는 경우 당신이 경우 ( 하는 자바 6을 사용하여, 나는 아마 UTF-8과 사용하십시오 Reader스트림에 대한 기본 설정 대신 ISO-8859-1 인코딩. )

  • 그것은을 반복 처리 당신은 정상을 반복 원하는만큼 Hashtable(이 Properties사용 예에서 파생) keySet(). 또는에서 반환 한 열거 형을 사용할 수 있습니다 propertyNames().


답변

속성 파일을 Foo 클래스와 동일한 패키지에 넣으면 쉽게로드 할 수 있습니다

new Properties().load(Foo.class.getResourceAsStream("file.properties"))

속성이 해시 테이블을 확장하면 해시 테이블에서와 같은 방식으로 값을 반복 할 수 있습니다.

* .properties 확장자를 사용하면 편집기 지원을받을 수 있습니다. 예를 들어 Eclipse에는 특성 파일 편집기가 있습니다.


답변

properties파일 을 만들고 읽는 방법에는 여러 가지가 있습니다 .

  1. 파일을 동일한 패키지에 저장하십시오.
  2. .properties확장 프로그램을 추천 하지만 자신의 것을 선택할 수 있습니다.
  3. 사용은에있는 클래스 논제 java.util패키지 => Properties, ListResourceBundle, ResourceBundle클래스.
  4. 속성을 읽으려면 반복자 또는 열거자를 사용하거나 직접 메소드 Properties또는 java.lang.System클래스를 사용하십시오.

ResourceBundle 수업:

 ResourceBundle rb = ResourceBundle.getBundle("prop"); // prop.properties
 System.out.println(rb.getString("key"));

Properties 수업:

Properties ps = new Properties();
ps.Load(new java.io.FileInputStream("my.properties"));


답변

속성 파일이로드됩니다.

Properties prop = new Properties();
InputStream stream = ...; //the stream to the file
try {
  prop.load(stream);
} finally {
  stream.close();
}

모든 구성 파일이있는 디렉토리에 .properties 파일을 저장하는 데 사용하지만 액세스하는 클래스와 함께 사용하지는 않지만 여기에는 제한이 없습니다.

이름을 … 나는 자세한 정보를 위해 .properties를 사용하고 싶지 않다면 .properties로 이름을 지정해야한다고 생각하지 않습니다.


답변

예:

Properties pro = new Properties();
FileInputStream in = new FileInputStream("D:/prop/prop.properties");
pro.load(in);
String temp1[];
String temp2[];
// getting values from property file
String username = pro.getProperty("usernamev3");//key value in prop file 
String password = pro.getProperty("passwordv3");//eg. username="zub"
String delimiter = ",";                         //password="abc"
temp1=username.split(delimiter);
temp2=password.split(delimiter);


답변

속성이 레거시가되었습니다. 환경 설정 클래스는 속성보다 선호됩니다.

기본 설정 데이터의 계층 적 콜렉션에있는 노드입니다. 이 클래스를 통해 응용 프로그램은 사용자 및 시스템 환경 설정 및 구성 데이터를 저장하고 검색 할 수 있습니다. 이 데이터는 구현 종속 백업 저장소에 지속적으로 저장됩니다. 일반적인 구현에는 플랫 파일, OS 특정 레지스트리, 디렉토리 서버 및 SQL 데이터베이스가 포함됩니다. 이 클래스의 사용자는 백업 저장소의 세부 사항에 대해 걱정할 필요가 없습니다.

문자열 기반 키-값 쌍인 속성과 달리이 Preferences클래스에는 기본 설정 데이터 저장소에서 기본 데이터를 가져오고 넣는 데 사용되는 몇 가지 메소드가 있습니다. 다음 유형의 데이터 만 사용할 수 있습니다.

  1. 부울
  2. 더블
  3. 흙손
  4. int
  5. 바이트 배열

특성 파일을로드하려면 절대 경로를 제공하거나 getResourceAsStream()특성 파일이 클래스 경로에있는 경우 사용 하십시오.

package com.mypack.test;

import java.io.*;
import java.util.*;
import java.util.prefs.Preferences;

public class PreferencesExample {

    public static void main(String args[]) throws FileNotFoundException {
        Preferences ps = Preferences.userNodeForPackage(PreferencesExample.class);
        // Load file object
        File fileObj = new File("d:\\data.xml");
        try {
            FileInputStream fis = new FileInputStream(fileObj);
            ps.importPreferences(fis);
            System.out.println("Prefereces:"+ps);
            System.out.println("Get property1:"+ps.getInt("property1",10));

        } catch (Exception err) {
            err.printStackTrace();
        }
    }
}

xml 파일 :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preferences SYSTEM 'http://java.sun.com/dtd/preferences.dtd'>
<preferences EXTERNAL_XML_VERSION="1.0">
<root type="user">
<map />
<node name="com">
  <map />
  <node name="mypack">
    <map />
    <node name="test">
      <map>
        <entry key="property1" value="80" />
        <entry key="property2" value="Red" />
      </map>
    </node>
  </node>
</node>
</root>
</preferences>

환경 설정 저장소의 내부 에서이 기사 를 살펴보십시오.