1

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

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

我正在将收到的文件保存在我的内部存储中,但我不知道我应该将它保存在哪里的脱机文件。有代码吗?适应症?对此很陌生。

4

2 回答 2

0

我会建议:

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

您应该将文件保存在应用程序的内部存储目录中,使用 getExternalStorageDirectorywhich 会将您的文件放在以下位置:/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

于 2013-04-19T14:37:25.693 回答
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();
}
于 2013-04-19T14:48:32.913 回答