0

嗨,我想知道如何访问 java/maven 中项目文件夹中的文件,我曾考虑过使用 src/main/resources,但有人告诉我,写入此目录中的文件是个坏主意,应该只用于项目的配置,所以我创建了一个新的非源文件夹,但我想知道是否有一种方法可以在不提供绝对路径的情况下在 java 中访问此文件,因为我需要在不同的环境中使用它。任何帮助或其他合适的建议都会非常感谢。我将在运行时写入文件。

编辑:

我正在使用它来访问文件:

private static final String ACTUAL_VALUES ="verification/actualCounterValues.csv";

verification我在项目中创建的文件夹在哪里

4

1 回答 1

1

据我了解,您的目标是从您的应用程序中访问文件,而无需硬编码相对路径,因为您将在不同的环境中运行它。

您可能必须解决的第一件事是将文件引用与您的应用程序分离 - 因为如果您移动应用程序,它必须适应新环境。您可以通过将绝对文件引用放入系统环境(可通过该System.getenv()方法访问)来解决该问题。另一种方法可能是将文件路径作为command-line-argument提供。

之后,您必须指定应用程序的哪个运行实例何时访问该文件。如果您的应用程序在 maven 和生产环境中分开运行 - 在 maven-project 中使用相对路径一切都很好。然后,生产应用程序将在其环境中生成并使用自己的文件。

如果他们必须共享文件,您必须提供从两个环境到该文件路径的物理访问,之后您可以使用单独的绝对路径(通过 cli-args 或系统属性传递)或使用“硬编码”访问该文件相对路径,它访问文件链接(指向该绝对文件)。

但是出于持续维护的原因,我必须劝阻您不要使用任何硬编码的配置特定变量。

如果这两个应用程序实例将同时访问一个文件,您还应该注意可能的并发困难(尤其是在文件系统中 - 请参阅该帖子)。

于 2014-04-29T12:39:43.680 回答