java - 如何写入文件属性的路径?
问题描述
我用两种语言编写了一个程序。我创建了一个文件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"));
}
}
解决方案
您正在尝试将./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
.
推荐阅读
- google-apps-script - 新文档上未触发主页触发器(添加 Google 工作区)
- apache-kafka - 如何理解 Kafka HA?
- nginx - 您如何将 NGINX 指向多个站点的标准 PHP?
- docker - Kubernetes 服务:随机连接被拒绝
- database - typeorm 中的复杂查询
- python - 使用 dask 作为并行后端时的问题
- string - VIsual Basic Strings.Trim(String) 方法和 .NET String.Trim 方法有区别吗?
- php - 使用通配符键从数组中提取键和值
- ansible - Ansible 不接受客户失败模块
- javascript - 无法读取未定义的属性 - 小的随机报价应用程序错误