我正在尝试使用 JavaFX 和 Gluon 开发一个可在桌面和 Android 上运行的跨平台应用程序。
在运行时,我的代码在我的资源文件夹中创建一个序列化文件。我还需要从/向其读取和写入序列化数据。
我设法在桌面上运行它,但在安卓上不行。因为我猜它有不同的文件结构。 这就是为什么我尝试动态获取文件路径。
在运行时之前创建(且未修改)的现有资源文件似乎在两个平台上都能正常工作。
我尝试使用 new File("src/main/resources/folder/file.ser").getAbsolutePath();
并尝试从我的根文件夹访问它,如下所示:getClass.getResources("/folder/file.ser").getPath();
。它们都在桌面(Windows)上运行良好,但不幸的是 Android 无法通过文件路径找到该文件。
另一个问题可能是我不应该在资源文件夹中创建运行时文件,但是我应该在哪里创建?
知道如何读取和写入运行时创建的可在 Android 和桌面上运行的文件吗?
(如果信息不足以帮助我,我会尝试以最小的形式重现我的代码并提供更多详细信息。)
最佳答案
我认为你完全走错了路。在资源文件夹中创建或写入文件通常不起作用。这个想法是,资源文件夹中的文件被打包成 jar 文件,或者以其他方式与应用程序 bundle 在一起,并且在运行时不可写。
您应该做的是在程序第一次启动时创建一个应用程序文件夹。例如,桌面上的常见做法是在用户主目录中创建一个不可见的文件夹“.myApp”。在 Android 等其他平台上,还有其他平台特定的命名和位置规则,但概念是相同的。首次启动时,您还可以将资源文件夹中的必要资源复制到此应用程序文件夹中,以便在运行时对其进行编辑。
关于Java - 跨平台文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59680493/