首页 > 解决方案 > 如何写入文件属性的路径?

问题描述

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

在 java.util.Properties 的 java.util.Properties.load0(Properties.java:353) 的 java.util.Properties$LineReader.readLine(Properties.java:434) 的线程“main”java.lang.NullPointerException 中的异常。在 com.rd.java.basic.practice.Helper.getProper(Part5.java:18) 处加载(Properties.java:341) 在 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"));
    }
}

标签: javaproperties

解决方案


您正在尝试将./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.Properties你应该使用java.util.ResourceBundle.


推荐阅读