【问题标题】:Copy file to assets folder将文件复制到资产文件夹
【发布时间】:2012-01-14 00:44:43
【问题描述】:

搜索 1 小时后,我没有找到任何解决问题的方法。

我想将一个文件从 sdcard 移动到 assets 文件夹,并覆盖 assets 文件夹中的现有文件(两个文件都是 sqlite 数据库,名称相同,数据略有不同)

??

【问题讨论】:

  • 您根本无法在运行时从 assets 文件夹中删除或添加任何内容。
  • 我想从服务器下载 sqlite 数据库,然后复制到 assets 文件夹。
  • 我该如何克服这种情况?
  • 你为什么要下载数据库,只是获取结果并使用它们。
  • 这就是我在上一条评论中所说的。从 Web 服务器上的数据库中获取最新信息并显示出来。

标签: java android file inputstream android-assets


【解决方案1】:

如果您不希望其他应用访问您的数据库,那么您可以做的是

  1. 从网站下载数据库。在 app 目录中创建一个临时数据库。
  2. getDatabasePath() 这将为您提供您创建的虚拟数据库的路径,现在将其替换为您下载的那个。

PS.:具有 root 访问权限的用户和应用程序仍然可以访问它,并且在这种情况下您无法执行任何操作

【讨论】:

    【解决方案2】:

    实际上,android .apk 文件的行为是只读的,因此该 apk 文件中的目录结构遵循相同, 所以没有人可以在以下位置编写此文件或对其进行更改运行时,这就是为什么你不能在运行时更改/asset folder。您可以从中读取文件(意味着将资产中可用的文件复制到任何 internal storage/sdcard 但不能将其写入反之亦然

    它适用于所有在 .apk 文件中构建的目录。根据文档。

    【讨论】:

    • 对不起,同样的评论,但我需要解决方案 :) 我在资产文件夹和服务器上都有数据库,现在我想稍后在服务器上更改数据库,以便用户可以获得最新的更新。我该怎么做?用户将如何获得该数据库? – 约翰·史密斯 7 秒前
    • 您必须将该数据库写入内部存储或 sdcard,(最好使用内部存储)..
    • 你能指导我怎么做吗?
    • 如果我在 sdcard 或内存中写入数据库,如何将该数据库复制到我的应用程序数据库中?
    • 好的,只需简单地将您创建的数据库放在资产目录中,然后当您的应用程序第一次安装时将该数据库文件复制到内部存储 /data/data/packagename/databases/ 然后打开该数据库文件到您的应用程序的东西,现在当您从 Web 服务器获取更新时,只需将数据更新到位于上述路径的内部存储中的数据库文件..
    【解决方案3】:

    Assets 文件夹不可写,它只能读取,所以你不能从 sdcard 复制到 assets,是的,你可以从 assets 复制到 sdcard

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2011-08-07
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多