为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring Boot 上读取部署时的静态文件

如何在 Spring Boot 上读取部署时的静态文件

肥皂起泡泡 2021-10-06 12:42:44
我希望能够在 heroku 上在线部署我的 Spring Boot 应用程序。我的应用程序从位于我的资源文件夹中的静态 .json 文件加载数据。到目前为止,我已经尝试过这段代码,但它不起作用。出于某种原因,我无法从 json 文件中读取数据。    public List<Category> getAllCategories() throws FileNotFoundException    {       Gson gson = new Gson();       ClassLoader classLoader = getClass().getClassLoader();       File file = new File(classLoader.getResource("static/data/data.json").getFile());       JsonReader reader = new JsonReader(new FileReader(file.getPath()));       List<Category> allCategories = gson.fromJson(reader, new TypeToken<List<Category>>(){}.getType());       return allCategories;    }
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

由于data.json移动它被部署在Heroku里面JAR,请尝试使用getResourceAsStream(path)替代getResource()。伪代码可能是,


Gson gson = new Gson();

ClassLoader classLoader = getClass().getClassLoader();

InputStream in = classLoader.getResourceAsStream("static/data/data.json");

JsonReader reader = new JsonReader(new InputStreamReader(in));

List<Category> allCategories = gson.fromJson(reader, new TypeToken<List<Category>>(){}.getType());



查看完整回答
反对 回复 2021-10-06
?
慕少森

TA贡献2019条经验 获得超9个赞

您能否将数据文件夹直接移动到资源下,因为静态资源路径在这里可能会发生冲突,下面的使用应该可以工作。

File file = new File(classLoader.getResource("data/data.json").getFile());


查看完整回答
反对 回复 2021-10-06
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信