【问题标题】:How write path to file properties?如何写入文件属性的路径?
【发布时间】:2020-07-22 21:08:41
【问题描述】:

我用两种语言编写了一个程序。我创建了一个文件resources_in.properties。当我试图从文件中获取属性时,我得到了错误:

线程“main”中的异常 java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:434) 在 java.util.Properties.load0(Properties.java:353) 在 java.util.Properties.load(Properties.java:341) 在 com.rd.java.basic.practice.Helper.getProper(Part5.java:18) 在 com.rd.java.basic.practice.Helper.main(Part5.java:27)

我认为这是因为我的属性路径不正确。 resources_in.properties 位于MyApp\src\main\resources_in.properties。 主类定位MyApp\src\main\java\com\rd\java\basic\practice\Helper.java

我的代码:

public class Helper {

    private static String getProper(String lang, String value) {
        Properties prop = new Properties();
        InputStream inputStream = Helper.class.getClassLoader().getResourceAsStream("./src/main/resources_en.properties");
        try {
            prop.load(inputStream);
        }catch (IOException e){
            System.out.println(e);
        }
        String word = prop.getProperty(value);
        return word;
    }
    public static void main(String[] args){
    System.out.println(getProper("en","car"));
    }
}

【问题讨论】:

  • 您在问题中写了三遍in_properties,但您的代码却是en_properties。也许这就是问题所在?

标签: java properties


【解决方案1】:

您正在尝试将./src/main/resources_en.properties 路径作为资源加载。这不起作用,资源不是作为文件系统文件引用,而是作为类路径路径引用。通常是:

Properties prop = new Properties();
try (InputStream in =
          Helper.class.getResourceAsStream("/resources_en.properties")) {
    prop.load(in);
}

但是,在大多数构建系统中,资源位于 /src/main/resource 下,而在您的情况下,路径是非标准的,这可能意味着打包 JAR 时出现问题。

由于文件名中的语言环境后缀,您似乎也在处理本地化资源。也许你应该使用java.util.ResourceBundle 而不是java.util.Properties。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多