如何使用字符串路径名在WAR中打开资源文件?

Vic*_*sky 2 java ear file-io spring war

我正在构建一个WAR/EAR,我的一个组件使用File IO读入许多自定义配置文件:

Reader reader = new BufferedReader(new FileReader(path));
Run Code Online (Sandbox Code Playgroud)

上面的路径是一个String,它通过Spring的applicationContext.xml文件作为属性传递给该类.

如果我想将所有这些配置文件放在WAR中,我指定什么字符串路径?甚至可以这样做吗?或者组件是否错误,应该使用getResourceAsStream()

我浏览了一圈,发现了很多的信息getResource()URI.但是,我无法找到是否可以在applicationContext.xml中创建到资源的正确文件路径

ale*_*sko 5

在spring环境中,最好使用spring资源API 简单示例:

@Inject
private ResourceLoader resourceLoader;

public void someMethod() {
    Resource resource = resourceLoader.getResource("file:my-file.xml");
    InputStream is = null;
    try {
        is = resource.getInputStream();
        // do work
        ....
    } finally {
        IOUtils.closeQuetly(is);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果要访问具有非固定路径的外部文件(非类路径资源,应位于存档中的META-INF /资源中),则应将此类路径放在主属性文件中并将其加载到app deploy上.

编辑:在示例中将@Resource更改为@Inject