哪个位置最适合下载更新到资产文件?

时间:2015-08-03 19:18:13

标签: android android-assets

抱歉这个菜鸟问题。我对Android开发还很陌生。

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

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

事情是 - 我仍然需要能够遵循他们检查服务器的原始设计以更新此文件并下载新文件。由于文件大小很大,每次只需将其下载到内存中并不可行。所以,说到这里,我需要静态地下载它,以便我可以在启动时告诉应用程序首先查看那里,如果它是空的,那么使用Assets中的备份。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

如果您想保存一些数据,则必须在移动存储上创建应用程序的文件夹。例如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