Java - 跨平台文件路径

标签 java android javafx desktop gluon

我正在尝试使用 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/

相关文章:

android - android中的视频流问题

java - 让 LocalDate 显示在 Javafx 的 Tableview 中

java - 在循环语句中声明变量在 Java 中如何工作

java - 按部分已知分隔符分割线

java - PaintComponent 未在 JPanel 中调用

android - 展开和折叠 CardView

java - 日本皇历和地区

android - 私钥算法与签名算法不兼容

events - 事件发生时出现 IllegalArgumentException,javafx

css - 如何在 JavaFX CSS 中创建自定义边框样式?