1

我正在尝试根据此处的代码读取配置文件:

http://www.opencodez.com/java/read-config-file-in-java.htm

所以我发现如果 config.cfg 与我运行代码的目录位于同一目录中,那么一切都很好,但如果配置位于不同的目录中

example: /path/to/config.cfg

我收到此错误:

java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at packagename.conf.Config.<init>(Config.java:14)
at packagename.conf.Config.main(Config.java:30)

我的猜测是它无法找到该文件。但是如何修改上面的代码以从不同的文件夹中读取配置文件?谢谢

编辑:来自链接的代码:

import java.util.*;
import java.util.Properties;

public class Config 
{
   Properties configFile;
   public Config()
   {
    configFile = new java.util.Properties();
    try {           
      configFile.load(this.getClass().getClassLoader().
      getResourceAsStream("myapp/config.cfg"));         
    }catch(Exception eta){
        eta.printStackTrace();
    }
   }

   public String getProperty(String key)
   {
    String value = this.configFile.getProperty(key);        
    return value;
   }
}
4

1 回答 1

4

您发布的代码期望配置文件位于类路径上(即,在 Java 查找.class文件的相同位置)。因此,您可以在类路径中包含包含配置文件的目录:

java   -classpath .:/path/to   packagename.conf.Config

或者您可以修改代码以期望配置文件是常规文件系统文件:

final InputStream cfg = new FileInputStream("/path/to/config.cfg");
try
    { configFile.load(cfg); }
finally
    { cfg.close(); }
于 2013-01-03T23:46:42.457 回答