다음 내용 1-4는 온라인으로 수집 된 관련 지식입니다. 요약하면, 그것들은 다음과 같은 지식 요점입니다.
1. 속성을 읽는 데 가장 일반적으로 사용되는 방법은 inputStream in = getClass (). getResourCeasStream ( "Resourcename"); 이 방법을 사용하려면 속성 파일과 현재 클래스가 동일한 폴더에 있어야합니다. 다른 패키지에 있으면 다음을 사용해야합니다.
inputStream ins = this.getClass (). getResourceAsStream ( "/cn/zhao/properties/testPropertiespath2.properties");
2. Java에서 경로 방법을 얻으십시오
3. 경로를 얻는 간단한 구현
4. 반사 된 속성 파일을 얻는 세 가지 방법
1 반사 된 속성 파일 얻기에 대한 가장 일반적인 방법과 생각 :
Java에서 Properties 파일을 읽는 방법에는 여러 가지가 있습니다. 인터넷에서 가장 일반적인 기사는 "Java의 속성 파일을 읽는 6 가지 방법"입니다. 그러나 Java 애플리케이션에서 가장 일반적으로 사용되는 방법은 java.lang.class 클래스의 getResourceasstream (문자열 이름) 메소드를 통해이를 구현하는 것입니다. 그러나 속성 파일을 읽는 많은 코드가 다음을 수행한다는 것을 알았습니다.
inputStream in = getClass (). getResourCeasStream ( "ResourceName");
여기에는 문제가 있습니다. 즉, getClass ()를 호출 할 때 기본적으로 생략됩니다! 우리는 이것이 정적 (정적) 방법 또는 정적 블록에서 사용할 수 없다는 것을 알고 있습니다. 그 이유는 정적 유형 메소드 또는 코드 블록이 클래스 자체에 속하며 특정 객체에 속하지 않기 때문입니다. 이 자체는 현재 객체를 나타내며 정적 메소드 나 블록을 호출 할 때 객체가 초기화되지 않습니다.
문제는 : 특정 클래스에 객체를 갖기를 원하지 않는다면이 클래스의 기본 생성자를 개인으로 설정하고 물론 다른 공통 생성자를 쓰지 않을 것입니다. 그리고 내 수업은 도구 클래스이며, 모두 정적 메소드와 변수입니다. 정적 블록이나 정적 메소드로 속성 파일을 얻고 싶지만이 방법은 작동하지 않습니다.
그래서 어떻게해야합니까? 실제로이 수업은 이와 같이 사용되지 않습니다. 클래스 객체를 얻기 만하면 쉽지 않습니다.
모든 클래스의 상위 클래스 객체를 사용하는 경우, 수업 자체를 작성하는 데 사용하는 것보다 Object.class를 사용하는 것이 편리하고 안전하지 않습니까? 하하, 여기 의사 소통을 용이하게하는 예가 있습니다.
java.util.properties import; import java.io.inputstream; import java.io.ioexception; / ** * 속성 읽기의 예 * 파일 : testProperties.java * 사용자 : leizhimin * 날짜 : 2008-2-15 18:38:40 */ public final class testproperties {private static string param1; 개인 정적 문자열 param2; static {properties proper = new Properties (); inputStream in = Object. 클래스 .getResourCeasStream ( "/test.properties"); {prop.load (in); param1 = prop.getProperty ( "inityears1") .trim (); param2 = prop.getProperty ( "inityears2") .trim (); } catch (ioexception e) {e.printstacktrace (); }} / *** 개인 생성자, 객체가 필요하지 않습니다* / private testProperties () {} public static string getParam1 () {return param1; } public static String getParam2 () {return param2; } public static void main (String args []) {System.out.println (getParam1 ()); System.out.println (getParam2 ()); }}실행 결과 :
151
152
물론 Object.class를 int.class로 바꾸는 것은 여전히 괜찮습니다. 하하, 당신은 그것을 시도 할 수 있습니다.
또한 정적 메소드 또는 블록으로 속성 파일을 읽으면 클래스 이름으로 클래스 객체를 직접 얻는 가장 안전한 방법이 있습니다. 예를 들어,이 예에서는 testProperties.class로 작성할 수 있습니다. 이것이 가장 안전한 방법입니다.
2 경로를 얻는 방법 :
fileb = 새 파일 (this .getClass (). getResource ( "") .getPath ()); 체계. out .println ( "fileb path :" + fileb);
2.2 현재 클래스의 프로젝트 이름을 얻으십시오.
체계. out .println ( "user.dir path :" + system. getProperty ( "user.dir"))
3. 경로를 얻기위한 간단한 Java 구현
/ *** 프로젝트의 상대 경로 하에서 파일의 절대 경로를 가져옵니다** @param parentsdir* 대상 파일의 상위 디렉토리, 예를 들어 프로젝트 디렉토리에는 lib, bin 및 conf directories가 있으므로 프로그램은 lib 또는* bin에서 실행되며 필요한 구성 파일은 구성되어 있으므로 구성 파일의 절대 경로를 찾아야합니다. static String getPath (String ParentDir, String filename) {String Path = NULL; 문자열 userDir = System.GetProperty ( "user.dir"); 문자열 userDirName = 새 파일 (userDir) .getName (); if (userDirName.equalSeignoreCase ( "lib") || userDirname.equalSignoreCase ( "bin")) {file newf = new File (userDir); file newp = new File (newf.getParent ()); if (filename.trim (). Equals ( "")) {path = newp.getPath () + file.separator + parentdir; } else {path = newp.getPath () + file.separator + parentDir + file.separator + filename; }} else {if (filename.trim (). equals ( "")) {path = userDir + file.separator + ParentDir; } else {path = userDir + file.separator + ParentDir + file.separator + filename; }} 반환 경로; } 4 반사를 사용하여 경로를 얻습니다.
입력 스트림 IPS1 = 열거. 클래스 .getClassLoader () .getResourCeasStream ( "CN/Zhao/enumstudy/testPropertiesPath1.Properties"); 입력 스트림 IPS2 = 열거. 클래스 .getResourCeasStream ( "TestPropertiesPath1.Properties"); 입력 스트림 IPS3 = 열거. 클래스 .getResourCeasStream ( "속성/testPropertiesPath2.Properties");
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.