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

标签 java maven file-io io project-folder

嗨,我想知道如何访问 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/

相关文章:

java - 更改 ExpandableListView 中每一行的背景颜色?

java - 如何使用PDFBox向PDF添加背景图像?

java - 保存使用graphics2d、java绘制的缓冲图像

perl - Perl中不存在文件的原子打开

java - Android 中的 list 错误(错误 : Unable to instantiate activity ComponentInfo )

java - 将 AbstractTransactionalDataSourceSpringContextTests 与 Hibernate 和 DbUnit 一起使用 - 找不到插入的数据

Maven 2 和 Web 项目的 Eclipse Helios 集成

java - Eclipse、Maven、GWT 和 ReSTLet

java - 无法解析类方言

c - 如果这是堆溢出导致我的程序崩溃,我应该如何正确处理内存分配?