【问题标题】:What location is most appropriate to download update to Asset file?什么位置最适合下载资产文件的更新?
【发布时间】:2015-08-03 19:18:12
【问题描述】:

对不起,菜鸟问题。我对 Android 开发还是很陌生。

我目前正在开发一个 Android 应用程序,该应用程序旨在从位于 Assets 目录中的 zip 文件中提取一些图像。最初的目标似乎是让应用检查服务器以查看 zip 是否已更新,然后下载新的 zip(如果有的话)。

问题是 Assets 目录,如果我理解正确的话,是只读的。

问题是 - 我仍然需要能够按照他们的原始设计检查服务器以获取此文件的更新并下载新的。由于文件很大,所以每次都简单地将其下载到内存中并不可行。因此,话虽如此,我需要将它下载到某个静态的地方,以便我可以在启动时告诉应用程序首先查看那里,如果那里是空的,则使用 Assets 中的备份。

应用程序的根文件夹是否是下载此文件的最佳位置,该文​​件将无限期保留,可能经常被替换并在每次运行时读取?还是违反标准设计程序?

谢谢!

【问题讨论】:

    标签: android android-assets


    【解决方案1】:

    像你一样伤心,资产文件夹是只读的。您无法以编程方式保存任何内容。

    如果您想保存一些数据,您必须在移动存储上创建应用程序的文件夹。例如data/yourApkName 然后在那里保存一些文件。

    String content = "hello world";
    File file;
    FileOutputStream outputStream;
    try {
        file = new File(Environment.getExternalStorageDirectory(), "youtApkName");
    
        outputStream = new FileOutputStream(file);
        outputStream.write(content.getBytes());
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    您还可以创建缓存/临时文件。

    保存缓存文件

    打开一个代表外部存储目录的文件,其中 你应该保存缓存文件,调用getExternalCacheDir()。如果用户 卸载您的应用程序,这些文件将自动 已删除。

    类似于ContextCompat.getExternalFilesDirs(),上面提到你 还可以访问辅助外部存储上的缓存目录(如果 可用)致电ContextCompat.getExternalCacheDirs()

    提示:为了节省文件空间并保持应用程序的性能,它是 重要的是您仔细管理缓存文件并删除那些 在您应用的整个生命周期中不再需要这些内容。

    如果您想在存储中保存健全的文件,您必须将其添加到您的清单中

    <manifest ...>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                         android:maxSdkVersion="18" />
        ...
    </manifest>
    

    如果您正在寻找下载文件的方法,您必须look here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 2021-07-03
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多