>Java >java지도 시간 >Properties 및 ResourceBundle에 대한 자세한 소개

Properties 및 ResourceBundle에 대한 자세한 소개

零下一度
零下一度원래의
2017-07-20 10:37:411542검색

1.Properties 및 ResourceBundle

두 클래스 모두 속성 파일에 키/값 형식으로 저장된 키-값 쌍을 읽을 수 있습니다. 속성 파일을 읽을 때 ResourceBundle의 작업은 비교적 간단합니다.

2.Properties

이 클래스는 Hashtable을 상속하고 키-값 쌍을 컬렉션에 저장합니다. 입력 스트림을 기반으로 속성 파일에서 키-값 쌍을 읽습니다. load() 메서드가 호출된 후에는 입력 스트림과의 연결이 끊어지고 입력 스트림을 자동으로 닫아야 합니다.

    /** * 基于输入流读取属性文件:Properties继承了Hashtable,底层将key/value键值对存储在集合中,
     * 通过put方法可以向集合中添加键值对或者修改key对应的value
     * 
     * @throws IOException     */@SuppressWarnings("rawtypes")
    @Testpublic void test01() throws IOException {
        FileInputStream fis = new FileInputStream("Files/test01.properties");
        Properties props = new Properties();
        props.load(fis);// 将文件的全部内容读取到内存中,输入流到达结尾fis.close();// 加载完毕,就不再使用输入流,程序未主动关闭,需要手动关闭/*byte[] buf = new byte[1024];
        int length = fis.read(buf);
        System.out.println("content=" + new String(buf, 0, length));//抛出StringIndexOutOfBoundsException*/System.out.println("driver=" + props.getProperty("jdbc.driver"));
        System.out.println("url=" + props.getProperty("jdbc.url"));
        System.out.println("username=" + props.getProperty("jdbc.username"));
        System.out.println("password=" + props.getProperty("jdbc.password"));/** * Properties其他可能用到的方法         */props.put("serverTimezone", "UTC");// 底层通过hashtable.put(key,value)props.put("jdbc.password", "456");
        FileOutputStream fos = new FileOutputStream("Files/test02.xml");// 将Hashtable中的数据写入xml文件中props.storeToXML(fos, "来自属性文件的数据库连接四要素");

        System.out.println();
        System.out.println("遍历属性文件");
        System.out.println("hashtable中键值对数目=" + props.size());
        Enumeration keys = props.propertyNames();while (keys.hasMoreElements()) {
            String key = (String) keys.nextElement();
            System.out.println(key + "=" + props.getProperty(key));
        }

    }

3.ResourceBundle

이 클래스는 클래스를 기반으로 속성 파일을 읽습니다. 속성 파일을 클래스로 취급하면 속성 파일이 정규화된 클래스 이름을 사용하여 패키지에 배치되어야 함을 의미합니다. 속성 파일의 경로가 아닌 것은 속성 파일을 참조합니다.

    /** * 基于类读取属性文件:该方法将属性文件当作类来处理,属性文件放在包中,使用属性文件的全限定性而非路径来指代文件     */@Testpublic void test02() {
        ResourceBundle bundle = ResourceBundle.getBundle("com.javase.properties.test01");
        System.out.println("获取指定key的值");
        System.out.println("driver=" + bundle.getString("jdbc.driver"));
        System.out.println("url=" + bundle.getString("jdbc.url"));
        System.out.println("username=" + bundle.getString("jdbc.username"));
        System.out.println("password=" + bundle.getString("jdbc.password"));

        System.out.println("-----------------------------");
        System.out.println("遍历属性文件");
        Enumeration<String> keys = bundle.getKeys();while (keys.hasMoreElements()) {
            String key = keys.nextElement();
            System.out.println(key + "=" + bundle.getString(key));
        }
    }

4. Spring 컨테이너로 속성 파일 읽기

일반적으로 데이터베이스 연결의 네 가지 요소는 속성 파일에 배치되고 프로그램은 속성 파일에서 매개변수를 읽습니다. 데이터베이스 연결 요소가 변경됩니다. 소스 코드를 수정할 필요가 없습니다. 속성 파일의 내용을 xml 문서로 로드하는 방법:

  1. 구성 파일 헤더에서 컨텍스트 제약 조건을 구성합니다.

  2. 구성 파일에 를 추가하고 속성 을 구성 파일에 로드합니다.

  3. 구성 파일 내용 가져오기: ${key}

5. Comment

#은 속성 파일에 주석을 추가하기 위해 앞에 배치됩니다.

6. 인코딩

속성 파일은 중국어를 지원하지 않는 ISO-8859-1 인코딩을 사용하며, 한자는 유니코드 인코딩으로 변환되어 표시됩니다.

위 내용은 Properties 및 ResourceBundle에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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