【问题标题】:Android: load java.io.file from resource fileAndroid:从资源文件加载 java.io.file
【发布时间】:2016-09-02 04:58:18
【问题描述】:

我想在我的 Android 应用程序中使用 Java 库。该库的类构造函数和方法通常采用文件路径(配置文件、字典等),然后根据给定路径构建 java.io.file 实例。

在我的 android 应用程序中,我想将这些文件存储在“res”文件夹中(可能在 res/raw 中)。问题是我必须将这些文件的路径提供给库的方法。

我可以使用 getResources() 轻松获得 InputStream,但我的库不能直接使用它。我将不得不通过所有将路径作为参数的方法,将其替换为 InputStream 并修改内容以处理 InputStreams 而不是文件。这代表了相当多的工作,我更喜欢不加修改地使用该库并使其易于升级。

即使使用基于资源文件的 java.io.file 不是一个好习惯,有可能吗?如果您能指出一种方法,那肯定会有所帮助。

谢谢。

【问题讨论】:

  • 一种选择是将 res/raw 中的文件写入应用程序的内部文件目录。

标签: java android resources


【解决方案1】:

如果库使用java.io.File,那么我认为在 Java 中没有办法做到这一点(更不用说 Java 的 Android 子集了)。使用回送文件系统可能可以解决问题,但这取决于您的 Android 设备的内核等。

见:


如果库使用java.nio.file.Path,则可以实现自定义FileSystemProvider,将资源映射到默认文件系统命名空间。

请注意,这是针对常规 Java 7 的。它需要相关 NIO 库的反向移植才能使其在 Android 上运行。我又寻找了一个可行的反向移植,但找不到。

见:


还有另一种“笨拙”的方法可以做到这一点。让您的应用程序将相关资源复制到可通过File 访问的文件中。

【讨论】:

  • 感谢您的详细解答。该库使用 java.io.File ,我宁愿避免将资源复制到文件中......因此唯一剩下的选择是编辑库的功能(幸运的是我有源代码)。
猜你喜欢
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
相关资源
最近更新 更多