java - 从 .apk 中提取文件?

标签 java android

在我的 android 应用程序中,我使用自己的 java 库从 jar 中提取 .db 文件。在 Java 桌面上它运行良好,但是当我尝试在 android 上执行它时,输入流永远阻塞。复制方法如下所示:

InputStream in = classloader.getResourceAsStream(...);
OutputStream out = new FileOutputStream(new File(...));
try {
  while ((read = in.read()) != -1) {
    out.write(read);
  }
} finally {
  try {
    in.close();
  } catch (final Exception e) {
    LOGGER.debug("Error", e);
  }

  try {
    out.close();
  } catch (final Exception e) {
    LOGGER.debug("Error", e);
  }
}

我想将此文件复制到外部文件目录并授予 android.permission.WRITE_EXTERNAL_STORAGE

有没有办法访问 /data/app/...apk 中的文件?如果不是,我如何检测到它不能被永久阻塞访问?

最佳答案

您应该将数据库文件放在 /assets 文件夹中,并在首次运行时将其复制到 /databases 文件夹中。可以找到这方面的教程 here .

但是,如果您只想创建表格和一些示例条目,您可能需要使用 onCreate() - 来自 SQLiteOpenHelper 的方法这样做。

关于java - 从 .apk 中提取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645751/

相关文章:

java - 找不到 Struts 调度程序

java - StAX - 如何将 XMLInputFactory.IS_VALIDATING 设置为 true?

java - 如何在用户输入后立即打印 JTextField 值?

android - 在Android Studio版本4.0中意外退出“获取错误过程”

java - 如何解决 java.lang.NoClassDefFoundError : javax/xml/bind/JAXBException

java - 并发进程中的互斥

android - 如何从 Android 资源 xml 文件夹中的 xml 文件获取 inputStream

android - Retrofit2:使用拦截器在查询参数中添加访问 token

android - Android 众筹应用的 PayPal 集成

android - WorkManager - 当我们同时使用默认初始化和自定义初始化时,我们是否应该删除默认初始化程序?