日期:2014-05-20  浏览次数:20888 次

用getResourceAsStream()读取外部文件的问题。在线等
package   test;

import   java.io.InputStream;
import   java.util.Properties;

public   class   Test   {

        public   static   void   main(String[]   args)   throws   Exception   {
                Properties   loggerConfigs   =   new   Properties();
                ClassLoader   loader   =   Test.class.getClassLoader();
                InputStream   in   =   loader.getResourceAsStream( "/resources/logger.properties ");
//                 InputStream   in   =   Test.class.getResourceAsStream( "/resources/logger.properties ");
                loggerConfigs.load(in);
                String   loggerName   =   loggerConfigs.getProperty( "logger ");
                System.out.println(loggerName);
        }

}

文件夹放在classes目录下面。

上面的代码会报如下的错误:
java.lang.NullPointerException
at   java.io.Reader. <init> (Reader.java:61)
at   java.io.InputStreamReader. <init> (InputStreamReader.java:80)
at   java.util.Properties.load(Properties.java:266)
at   test.Test.main(Test.java:13)
Exception   in   thread   "main "  

如果使用被注释的那一行来读文件是成功的。

我的问题是使用ClassLoader来读取要怎么做才能成功呢?
最好有能执行的代码。谢了。

------解决方案--------------------
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream( "/resources/logger.properties ");

------解决方案--------------------
ClassLoader loader = Test.class.getClassLoader();
InputStream in = loader.getResourceAsStream( "/resources/logger.properties ");

使用这个ClassLoader的时候,logger.properties要放在你的classpath中才能找得到~
------解决方案--------------------
mark
------解决方案--------------------
学习