두 클래스 모두 속성 파일에 키/값 형식으로 저장된 키-값 쌍을 읽을 수 있습니다. 속성 파일을 읽을 때 ResourceBundle의 작업은 비교적 간단합니다.
이 클래스는 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)); } }
이 클래스는 클래스를 기반으로 속성 파일을 읽습니다. 속성 파일을 클래스로 취급하면 속성 파일이 정규화된 클래스 이름을 사용하여 패키지에 배치되어야 함을 의미합니다. 속성 파일의 경로가 아닌 것은 속성 파일을 참조합니다.
/** * 基于类读取属性文件:该方法将属性文件当作类来处理,属性文件放在包中,使用属性文件的全限定性而非路径来指代文件 */@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)); } }
일반적으로 데이터베이스 연결의 네 가지 요소는 속성 파일에 배치되고 프로그램은 속성 파일에서 매개변수를 읽습니다. 데이터베이스 연결 요소가 변경됩니다. 소스 코드를 수정할 필요가 없습니다. 속성 파일의 내용을 xml 문서로 로드하는 방법:
구성 파일 헤더에서 컨텍스트 제약 조건을 구성합니다.
구성 파일에
구성 파일 내용 가져오기: ${key}
#은 속성 파일에 주석을 추가하기 위해 앞에 배치됩니다.
속성 파일은 중국어를 지원하지 않는 ISO-8859-1 인코딩을 사용하며, 한자는 유니코드 인코딩으로 변환되어 표시됩니다.
위 내용은 Properties 및 ResourceBundle에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!