2016-05-07 109 views
-2

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

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

我可以很容易地使用getResources()获取InputStream,但这不会被我的库直接使用。我将不得不通过所有将路径作为参数的方法,将其替换为InputStream并修改内容以处理InputStream而不是Files。这代表了相当多的工作,我更愿意不加修改地使用该库,并保持它可以轻松升级。

即使使用基于资源文件的java.io.file文件也不是一个好习惯,是否有可能?如果你能指出一种方法来做到这一点,它肯定会有所帮助。

谢谢。

+0

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

回答

1

如果库使用java.io.File,那么我不认为有一种方法可以在Java中执行此操作(更不用说Java的Android子集)。这也许可以解决与回送文件系统的问题,但是这取决于你的Android设备的内核等

参见:


如果库用途java.nio.file.Path,那么可以实现将资源映射到默认文件系统名称空间的定制FileSystemProvider

注意这是针对普通的Java 7.它需要相关NIO库的后端才能使其在Android上运行。我再次寻找一个可行的backport,并找不到一个。

请参见:


还有一个 “笨重” 的方式来做到这一点。让您的应用程序将相关资源复制到可通过File访问的文件。

+0

感谢您的详细解答。该库使用java.io.File,我宁愿避免将资源复制到文件...因此唯一剩下的选择是编辑库的功能(幸运的是我有源代码)。 – mathmax