【发布时间】:2015-09-25 14:19:32
【问题描述】:
我正在尝试在服务器上的 Web 应用程序中读取本地文件。在部署到 JBoss 之外对此进行测试时,文件路径是正确的。但是,当我将它部署到 JBoss 时,文件路径会更改 JBoss 的 bin 目录。 user.dir 系统属性在部署为战争时会发生变化。
如何在不使用绝对文件路径的情况下防止这种情况发生?
我想避免使用绝对文件路径,因为项目需要在具有不同目录结构的多台机器上复制。
String curDir = System.getProperty("user.dir");
String fileLocation = curDir.toString() + "/end/of/path/to/flat.json";
JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(fileLocation)));
【问题讨论】:
-
在 servlet 环境中,不应使用来自用户目录的相对路径。
-
@meskobalazs 我读了一些关于类路径资源的文章。那是我应该研究的更多吗?
-
这样会更好。
-
@UltraSonja 如果你有不同结构的不同机器,你应该有一些配置设置来设置你的基本目录并使所有路径都与此相关。这可确保您在各个方向上都具有最大的灵活性。
-
如果需要推送并且您必须将文件保存在文件系统中,您可以使用 servlet 初始化参数或类似机制来传递外部目录的路径。依赖当前目录或
user.dir在网络应用程序中是个坏主意。
标签: java