2012-12-19 41 views
6

Nhiệm vụ đơn giản Hmm nhưng làm cách nào để tải tệp thuộc tính từ đường dẫn không nằm trong đường dẫn lớp của tôi?Tải một tệp thuộc tính từ đường dẫn không nằm trong đường dẫn lớp của tôi

ví dụ: tôi có tập tin đơn giản java mà tôi thực hiện như thế này: foo.jar d: /sample/dir/dir/app1.properties và trong mã i làm:

public boolean InitConfig(String propePath) { 
     prop = new Properties(); 
     try { 

      InputStream in = this.getClass().getClassLoader().getResourceAsStream(propePath); 
      prop.load(in); 
      return true; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return false; 
     } 
    } 

trong đó propePath là: d: /sample/dir/dir/app1.properties
và InputStream luôn luôn là rỗng. tại sao điều này xảy ra?

+1

Không 'InputStream in = new FileInputStream (propePath);' work? – jlordo

+0

Bạn phải tải nó bằng cách sử dụng đường dẫn của tập tin sau đó. GetResourceAsStream là dành cho các tài nguyên có sẵn trên classpath. – muruga

Trả lời

16

Tài nguyên duy nhất có thể được tải bởi Classloader.getResourceAsStream là tài nguyên trong đường dẫn lớp (trình tải). Để đọc các thuộc tính từ một đường dẫn tùy ý, hãy sử dụng một trong các hàm load của chính lớp Properties.

final Properties props = new Properties(); 
props.load(new FileInputStream(filePath)); 
Các vấn đề liên quan