在过去的几天里,我一直在尝试找到将文件写入 android 数据文件夹的子目录的正确方法。我发现的大多数答案都不清楚,或者没有以正确和有效的方式解决问题,所以我最终决定问。我通过基本上通过 php 脚本将数据库上传到服务器,为用户提供了在我的服务器上备份他的数据的可能性。该数据库位于
'/data/data/com.package/databases/data.db'
这里的问题是当用户想要重新加载备份的数据库时。应用程序下载文件,然后将其写入(覆盖旧文件)到 /databases/data.db' 文件,然后重新加载。我已经设法让一切正常工作,直到我必须写入下载的文件,因为 FileOutputStream 抛出一个非法参数异常,说我不能在路径中使用路径分隔符。我知道 FileOutputStream 只能写入数据文件夹的第一级,不能写入子目录。如何才能做到这一点?如果做不到,有没有办法将默认数据库路径设置为'data'目录的第一级来解决这个问题?如果这是我想要获得的完全错误的方法,我愿意接受批评,但得到答案仍然很好,
public void aSyncDatabaseDownloadFileFinish(PhpWrapper feed) {
if (validateServerResponse(feed.Result)) {
// Copy Database to Directory
try {
FileOutputStream fos = ctx.openFileOutput(ctx.getDatabasePath(DataDatabaseHelper.DBNAME).getAbsolutePath(),
Context.MODE_PRIVATE);
fos.write(feed.DownloadedBytes, 0, feed.DownloadedBytes.length);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
else
Toast.makeText(ctx, ctx.getResources().getString(R.string.nofilesonserver), Toast.LENGTH_SHORT).show();
}
提前致谢。