getResourceAsStream为现有文件返回null

时间:2017-11-01 15:08:17

标签: java file io resources

我尝试将资源文件作为流加载:

public static InputStream getClientSecretStream() {
    return ClientSecretsUtils.class.getClassLoader().getResourceAsStream("/Me/my_txt.json");
}

我的文件位于:

"/src/main/resources/Me/my_txt.json"

但是.getResourceAsStream("/Me/my_txt.json");返回null

.getResourceAsStream("my_txt.json");也返回null

我应该检查什么?

1 个答案:

答案 0 :(得分:0)

  • 类加载器具有绝对路径,没有标题斜杠。
  • class.getResource在相对路径时从该类的包目录路径开始,或者需要绝对路径的起始斜杠。

所以:

return ClientSecretsUtils.class.getClassLoader()
           .getResourceAsStream("Me/my_txt.json");
return ClientSecretsUtils.class.getResourceAsStream("/Me/my_txt.json");

ClientSecretsUtil位于同一个jar中。

查看jar(采用zip格式),然后检查路径。它必须区分大小写

您的目录约定遵循maven构建基础结构,所以我的猜测可能是偶然的my_txt.json.txt等。