【问题标题】:How to call filepath for files listed in a .properties file如何为 .properties 文件中列出的文件调用文件路径
【发布时间】:2024-04-29 18:05:02
【问题描述】:

我有一个 .properties 文件,位于我创建的名为 res 的源文件夹下(使用 Eclipse Mars 2)。我还有另外两个文件夹,分别是 messagesschemas

在将项目制作成.war 文件后,我需要帮助来提供文件路径,以便它在本地和服务器(例如 JBoss)上工作。这是我的 .properties 文件:

# Credentials
user=flow
password=flow

# Path to schema for validation
schemaPath=schemas/Schema1.xsd

# Path to where you want to keep incoming and outgoing messages
messagePath=messages/

仅当我提供两个不同*Path 属性的完整路径(以上不是完整路径)时,上述属性文件才有效。但是,我不能这样做,因为它需要在应用服务器和不同的操作系统上工作。

在我的代码中,我将文件路径保存到字符串并使用这些字符串指定写入或读取的位置。在使用.war 文件部署到服务器后,我怎样才能使它工作?

我在 Eclipse Mars 2 中使用动态 Web 项目。

编辑:由于属性是用户可配置的,它们可能会给出完整路径。无论路径是如图所示的短路径还是完整路径,它都应该工作。

【问题讨论】:

  • 如果您的应用程序部署为 WAR,这些属性的值怎么可能是相对路径?他们不能(不应该)将文件添加到 WAR 中,并且您的应用程序不能写入 WAR。如您所示,这些路径的值是相对的意味着什么?
  • 我不确定我是否明白你在问我什么。我想指定这些目录在项目中的位置,因为它们可以被其他开发人员更改。它们可以在项目文件夹结构内或项目外。

标签: java eclipse properties filepath


【解决方案1】:

您必须确保properties 文件是classpath 的一部分,通常将其包含在classes/ 目录中。

在您的 Eclipse 中将带有properties 文件的文件夹标记为Source Folder。如果它在包中,则在加载文件时在路径中使用该包名称。

例如,如果文件在config/data.properties,则通过.getResource("config/data.properties");加载文件

【讨论】:

  • 我想你误会了。我可以很好地阅读properties 文件。我无法让properties 文件中的文件路径工作,除非我给它一个完全限定的路径(例如C:/Users/flow/Desktop/Project/....)。由于该程序将在Linux和Windows上使用,我不能给它这样的路径。