Java 프로젝트에서 properties 파일 읽기

5338 단어 javaproperties 읽기
다음 1-4의 내용은 인터넷에서 수집한 관련 지식이다. 총괄적으로 말하면 다음과 같은 몇 가지 지식점이다.
1. properties 파일을 읽는 가장 일반적인 방법 InputStream in = getClass().getResourceAsStream("자원Name");이 방식은properties 파일과 현재 클래스가 같은 폴더 아래에 있어야 합니다.다른 패키지의 경우 다음을 사용해야 합니다.

InputStream ins = this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");
2. Java에서 경로 가져오기 방법
3. 획득 경로의 간단한 실현
4. 반사 방식으로properties 파일을 가져오는 세 가지 방식
1 반사 방식으로 properties 파일을 가져오는 가장 일반적인 방법과 생각:
Java가properties 파일을 읽는 방법이 비교적 많다. 인터넷에서 가장 많은 글은'Java가properties 파일을 읽는 6가지 방법'이지만 Java 응용 프로그램에서 가장 자주 사용하는 것은java이다.lang. Class 클래스의 get Resource As Stream(String name) 방법으로 이루어졌지만properties 파일을 읽는 많은 코드에서 이렇게 하는 것을 보았습니다.

InputStream in = getClass().getResourceAsStream(" Name");
이 안에 문제가 있습니다. getClass () 를 호출할 때 기본적으로this를 생략한 것입니다!우리는this가 static(정태) 방법이나 static 블록에서 사용할 수 없다는 것을 알고 있다. 왜냐하면 static 유형의 방법이나 코드 블록은 클래스 자체에 속하고 특정한 대상에 속하지 않기 때문이다.this 자체는 현재 대상을 대표하고 정적 방법이나 블록이 호출될 때 초기화 대상을 사용하지 않기 때문이다.
문제는 만약에 내가 어떤 유형에 대상을 주고 싶지 않다면 나는 이런 기본 구조 방법을 사유로 설정할 것이다. 물론 다른 공유 구조 방법도 쓰지 않을 것이다.그리고 이 클래스는 도구 클래스입니다. 모두 정적 방법과 변수입니다. 정적 블록이나 정적 방법에서properties 파일을 얻으려면 이 방법은 통하지 않습니다.
그럼 어떡하지?사실 이 종류는 이렇게 쓰지 않는다. 그는 단지 클래스 대상을 얻기만 하면 된다. 그건 쉽지 않다.
모든 클래스의 상위 클래스 Object를 가져와서 Object를 사용합니다.class는 당신의 사용보다 쓰기 편하고 안전하지 않습니까?허허, 다음은 교류를 편리하게 하기 위한 예를 하나 제시한다.       

import java.util.Properties;  
import java.io.InputStream;  
import java.io.IOException;  
 
/**  
*  Properties   
* File: TestProperties.java  
* User: leizhimin  
* Date: 2008-2-15 18:38:40  
*/   
public  final  class TestProperties {  
   private  static String param1;  
   private  static String param2;  
 
   static {  
    Properties prop = new Properties();  
    InputStream in = Object. class .getResourceAsStream( "/test.properties" );  
     try {  
      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로 바꿔도 돼요. 하하, 여러분 한번 해 보세요.
또한 static 방법이나 블록에서 Properties 파일을 읽는 가장 안전한 방법은 이 종류의 자체 이름으로 Class 대상을 직접 얻는 것이다. 예를 들어 본 예에서 TestProperties라고 쓸 수 있다.class, 이렇게 하는 것이 가장 안전한 방법이다
2 경로를 가져오는 방법:

File fileB = new File( this .getClass().getResource( "" ).getPath()); 
System. out .println( "fileB path: " + fileB);  

2.2 현재 클래스가 있는 프로젝트의 이름을 가져옵니다.

System. out .println("user.dir path: " + System. getProperty ("user.dir"))
3 간단한 Java 구현을 위한 경로 가져오기

/** 
 
   *  
 
   * 
 
   * @param parentDir 
 
   * , , , lib bin conf , lib or 
 
   * bin, conf ,  
 
   * @param fileName 
 
   *  
 
   * @return  
 
   */ 
 
  public static String getPath(String parentDir, String fileName) { 
 
    String path = null; 
 
    String userdir = System.getProperty("user.dir"); 
 
    String userdirName = new File(userdir).getName(); 
 
    if (userdirName.equalsIgnoreCase("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;  
      } 
 
    } 
     return path; 
 
  } 

4 반사 방식을 사용하여 경로를 가져옵니다.

InputStream ips1 = Enumeration . class .getClassLoader() .getResourceAsStream( "cn/zhao/enumStudy/testPropertiesPath1.properties" ); 
InputStream ips2 = Enumeration . class .getResourceAsStream( "testPropertiesPath1.properties" ); 
InputStream ips3 = Enumeration . class .getResourceAsStream( "properties/testPropertiesPath2.properties" ); 
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기