我正在构建一个在java上运行的应用程序(对于mac),我需要它来编辑自己的内容。因为,毕竟,一个应用程序只是一个美化的目录,我假设你可以用它来改变它里面的东西。但是这个应用程序将被分发,我不知道用户希望放置应用程序的位置。目前,我所做的所有文件引用都使用File("path/from/user/to/application")
,但当然,假设您可以从用户主驱动器中找到您的应用程序。有没有办法知道.app文件存储在哪里?我在应用程序中的当前目录设置是:
app.app
Contents
|Info.plist
|PkgInfo
|---Resources
| |icon.icns
|
|---MacOS
| |JavaAppLauncher
|
|---Java
|---app.jar
|---package
|classFile.class
|---Folder
|FileToEdit.xml
那么有没有办法在java代码中找到并读取/更改FileToEdit.xml(存储在classFile.class中)而不知道app.app在哪里?
答案 0 :(得分:0)
我要说的只是指定从src文件夹开始的路径(从项目的文件夹角度看)。
所以如果你有类似的东西:
的src / FileToEdit.xml
然后您需要做的就是使用/FileToEdit.xml,因为它位于类路径的根目录中。
答案 1 :(得分:0)
您可以使用app.class.getClassLoader().getResourceAsStream("package/FileToEdit.xml")
访问程序中的文件,即使它已装在jar中。如您所见,您不需要在那里使用完整路径,只需确保您的资源包含在构建路径中。这是为了读取文件。无法保证文件可写。
或强>
您可以使用临时文件来执行您需要执行的操作。那些很可能是可写的。您可以使用原始FileToEdit.xml
文件作为临时文件的模板,然后使用
File file = File.createTempFile("FileToEdit.xml", null);
并使用该文件。
但如果您真的想要保留数据,那么您应该使用适当的数据库。