覆盖我的应用程序中的文件

时间:2013-04-19 14:01:39

标签: android file save storage overwrite

当我启动应用程序时,我将调用Web服务并在我的应用程序中保存服务返回的文件。出于离线目的,我希望在我的应用中有一个文件,万一Web服务已关闭。

我的问题是:我想用我从网络服务收到的文件覆盖我拥有的文件。我该怎么办?我应该在哪里保存文件才能执行此任务?

我正在保存我内部存储中收到的文件,但离线文件我不知道应该保存在哪里。任何代码?适应症?新的。

2 个答案:

答案 0 :(得分:0)

我建议:

  • 将您的文件保存在项目中(APK)
  • 首次启动时,将此文件复制到本地存储
  • 成功返回Web API后,复制(并覆盖)本地存储上的文件。
  • 始终从本地存储上的文件中读取

您应该使用getExternalStorageDirectory将文件保存在应用程序的内部存储目录中,这会将您的文件放在以下位置:/Android/data/<package_name>/files/。这是放置文件的最佳位置,因为卸载应用程序时,此目录中的文件也将被删除。

更多信息请参阅:http://developer.android.com/guide/topics/data/data-storage.html#filesExternalhttp://developer.android.com/training/basics/data-storage/files.html

答案 1 :(得分:0)

Android中基本上有两个位置可用于保存文件。用户和所有应用程序可访问的外部存储,或专用于您的应用程序的专用目录。为了你的目的,后来似乎更合适。

要操作私有存储中的文件,请参阅Context类中的openFileInputopenFileOutput(以及其他)方法。

保存示例:

FileOutputStream fos = context.openFileOutput("my-file", Context.MODE_PRIVATE);
fos.write(bytes);
fos.close();

加载示例:

File f = new File(context.getFilesDir(),"my-file");
if (f.exists()) {
    byte[] bytes = new byte[(int)f.length()];
    FileInputStream fis = context.openFileInput(f.getName());
    fis.read(bytes);
    fis.close();
}