嗨,我想知道如何访问 java/maven 中项目文件夹中的文件,我考虑过使用 src/main/resources,但有人告诉我,写入此目录中的文件是一个坏主意,并且应该只在项目的配置中使用,所以我创建了一个新的非源文件夹,但我想知道是否有一种方法可以在java中访问此文件而不给出绝对路径,因为我需要在不同的环境中使用它。任何帮助或其他合适的建议都会非常感谢。我将在运行时写入文件。
编辑:
我正在使用它来访问文件:
private static final String ACTUAL_VALUES ="verification/actualCounterValues.csv";
其中verification
是我在项目中创建的文件夹
最佳答案
据我了解,您的目标是从应用程序内访问文件,而不需要硬编码相对路径,因为您将在不同的环境中运行它。
您可能需要解决的第一件事是将文件引用与您的应用程序解耦 - 因为如果您移动应用程序,它必须适应新环境。
您可以通过将绝对文件引用放入系统环境(可以通过 System.getenv()
方法访问)来解决这个问题。另一种方法是将文件路径传递为 command-line-argument .
之后,您必须指定应用程序的哪个正在运行的实例何时访问该文件。如果您的应用程序在 Maven 和生产环境中分开运行 - 在 Maven 项目中使用相对路径一切都很好。然后,生产应用程序将在其环境中生成并使用自己的文件。
如果他们必须共享文件,您必须提供从两个环境到该文件路径的物理访问,之后您可以使用单独的绝对路径(通过 cli-args 或系统属性传递)或使用“硬编码的”相对路径,它访问文件链接(指向该绝对文件)。
但出于持续维护的原因,我必须阻止您使用任何硬编码的特定于配置的变量。
如果这两个应用程序实例将访问同一个文件,您还应该注意可能的并发困难(尤其是在文件系统中 - 请参阅 post )。
关于java - 读/写项目文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23364792/