Java 将外部文件作为资源加载

Java 将外部文件作为资源加载,java,spring-boot,Java,Spring Boot,我正在加载资源文件,如下所示 public static JSONArray readConfig(String fileName) throws IOException, JSONException{ ClassPathResource res = new ClassPathResource(fileName); byte[] bdata = FileCopyUtils.copyToByteArray(res.getInputStream()); String

我正在加载资源文件,如下所示

public static JSONArray readConfig(String fileName) throws IOException, JSONException{
    ClassPathResource res = new ClassPathResource(fileName);    
    byte[] bdata = FileCopyUtils.copyToByteArray(res.getInputStream());
    String json = new String(bdata, StandardCharsets.UTF_8);
    JSONArray jarr = new JSONArray(json);
    return jarr;
};
我想知道是否可以在resources/classpath中添加一个外部位置/文件,比如“/something/something1/config.json”,这样就可以用上面相同的代码读取它


谢谢…

您可以在类路径中添加文件夹位置

java -Dloader.path="/something/something1/" -jar your-app.jar
有关加载程序路径的
文档,请参阅


如果要加载不在类路径中的资源,请使用
FileSystemResource
而不是
ClassPathResource
,这样它将加载文件系统中的资源。

您可以在类路径中添加文件夹位置

java -Dloader.path="/something/something1/" -jar your-app.jar
有关加载程序路径的
文档,请参阅


如果要加载不在类路径中的资源,请使用
FileSystemResource
而不是
ClassPathResource
,这样它将加载文件系统中的资源。

是否可以像创建应用程序时那样,从自身的代码中加载资源?这样做就像在应用程序中硬编码路径一样。如果路径在部署应用程序的环境中发生了更改或不同,该怎么办。在这种情况下,由于路径的更改,您必须重新打包应用程序。另一种方法是,您可以使用外部属性文件来定义/something/something 1/config.json的位置。实际上,路径位于env var中,因此硬编码不是问题。我只需要重用现有代码来获取外部文件,然后就可以了。。您可以使用上面代码的重载方法,使用FileSystemResource加载文件,参数是env变量的路径。您是否可以使用FileSystemResource更新您的ans,以便我可以将其标记为ans…是否可以从代码本身执行此操作,就像我们在创建应用程序时一样?这样做就像在应用程序中硬编码路径。如果路径在部署应用程序的环境中发生了更改或不同,该怎么办。在这种情况下,由于路径的更改,您必须重新打包应用程序。另一种方法是,您可以使用外部属性文件来定义/something/something 1/config.json的位置。实际上,路径位于env var中,因此硬编码不是问题。我只需要重用现有代码来获取外部文件,然后就可以了。。您可以使用上面代码的重载方法,使用FileSystemResource加载文件,参数是env变量的路径。。。