当前位置: 首页 > 知识库问答 >
问题:

具有"user.dir"系统属性的相对文件路径

雷逸仙
2023-03-14

我试图在服务器上的web应用程序中读取一个本地文件。在JBoss部署之外测试时,文件路径是正确的。然而,当我将它部署到JBoss时,文件路径改变了JBoss的< code>bin目录。当< code>user.dir系统属性被部署为war时,它会发生变化。

我如何在不使用绝对文件路径的情况下防止这种情况?

我想避免绝对文件路径,因为项目需要在具有不同目录结构的多台机器上复制。

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)));

共有2个答案

严兴言
2023-03-14

感谢这个问答,我找到了一个解决方案。我不确定这是否是最好的方法,但它有效。我在我的Web应用程序中添加了src/main/Resources文件夹,并将我需要访问的文件放在那里。

来自 src/main/resources 的资源将被放在类路径的根目录上,因此您需要将资源获取为:

代码:

String file = "/flat.json";

JsonReader reader = new JsonReader(new InputStreamReader(getClass().getResourceAsStream(file)));
丁成弘
2023-03-14

您是否尝试过从

HttpServeltRequest.getServletContext().getRealPath("META-INT/aop.xml");

它为您提供当前操作系统上的真实路径。

问候,

 类似资料:
  • 问题内容: 我正在运行一个具有以下目录结构的简单Java程序: 在Hello.java中,我正在打印“ user.dir”系统属性的值。 我班的已编译文件将存储在文件夹中。 当我从Eclipse运行此类时(右键单击源文件,然后单击Run As-> Java Application),它将打印路径到“ MyProject”文件夹,即在控制台窗口中。 然后,我使用命令窗口运行相同的程序。这是我在窗口上

  • 问题内容: 这似乎是一个直接的问题。但我无法破解。在helper1.js中,我想访问foobar.json(来自) 我无法使它正常工作fs:如何找到父文件夹? 这里的任何帮助将是巨大的。 问题答案: 您可以使用该模块将所在目录的路径连接到的相对路径。这将为您提供前往的绝对路径。 假设采用UTF8编码,则此方法应可在Linux,OSX和Windows上使用。

  • 问题内容: 我读过的几乎每篇文章都告诉我,Java中没有 chdir 。这个问题的公认答案是您不能用Java做到这一点。 但是,这是我尝试过的一些方法: 这是我正在使用的测试课程: 请解释为什么这样做。我可以从现在开始使用它,并期望它在所有平台上都能以相同的方式工作吗? 问题答案: 仅仅因为给出期望的答案并不意味着它正在做您想要的事情。 例如,尝试: 那到底在哪里?在我的Windows机器上,即使

  • 在Spring中,我可以通过指定相对于目录的路径来访问资源。例如,如果我要求,我将得到一个表示。然而,我看不到相反的方向。 给定一个,是否有办法找到它相对于的路径? 我正在使用来获取我的应用程序中的文件资源列表。我需要的资源位于我的应用程序的文件夹中。 我可以很容易地得到绝对路径,但是我想找到一种方法来获得从开始的部分,因为Spring就是这样发现它的。

  • 问题是我的控制器中有一个spring表单和两个具有相同属性的@ModelAttribute参数。表单的“commandName”参数设置为我的modelAttributes名称之一。令我惊讶的是,不仅将属性映射到用“commandName”指定的模型属性,还映射到第二个属性。 我还没有找到确切的解决方案,除了和我的相似之处:Spring-form多个表单具有相同的模型属性名称属性 但在我的例子中,

  • 我想建立一个本体模型,在那里我可以表示一个实体的缺失,可以这么说。例如,我希望有Rain和No_Rain,我将它们定义为不相交类。在此之后,我有了object属性has_rain。我想以某种方式能够推理出,对于同一个人来说,不可能同时拥有has_rain(雨)和has_rain(无雨)我已经搜索了很多,但是没有找到我问题的答案。也许我在什么地方错过了。对不起,如果我没有解释好一切,这是我的第一个问