读/写项目文件夹中的文件

时间:2014-04-29 12:33:29

标签: java maven file-io io project-folder

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

编辑:

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

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

其中verification是我在项目中创建的文件夹

1 个答案:

答案 0 :(得分:1)

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

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

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

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

但是我必须阻止你使用任何硬编码的配置特定变量来维持持续的维护。

如果这两个应用程序实例同时访问一个文件,您还应该注意可能的并发问题(特别是在文件系统中 - 请参阅post)。