gpt4 book ai didi

java - 是否保存替换SQLite数据库

转载 作者:行者123 更新时间:2023-12-01 16:57:15 25 4
gpt4 key购买 nike

我在应用程序中添加了一个选项,用户可以将应用程序备份到 Google 云端硬盘。

<小时/>

我正在获取对数据库的引用,如下所示:

File dbFile = new File(context.getDatabasePath(DATABASE_NAME).getAbsolutePath());

当我记录上述内容以获取路径时,会返回 - /data/user/0/my.package.name/databases/DatabaseName.DB

然后,我创建数据库的副本并将其上传到 Google 云端硬盘。

这工作正常。

<小时/>

现在,在另一台设备上,我将数据库下载到我的应用程序目录中。保存后,我通过执行以下操作来移动/替换旧数据库:

try {
//The database is stored here from Google Drive
File directoryFile = context.getExternalFilesDir("BackupDB");
InputStream mInput = new FileInputStream(directoryFile+"/DatabaseName.DB");
//Path to current database - /data/user/0/my.package.name/databases/DatabaseName.DB
String outFileName = context.getDatabasePath(DATABASE_NAME).getAbsolutePath();
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0){
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();

} catch (Exception e) {
e.printStackTrace();
}

以上内容在我的设备上运行良好。

<小时/>

我看到有人说 /data/data/ 只能由 root 设备访问,但我也看到很多人说我们可以覆盖应用程序的数据库。

我的问题:

在所有 Android 版本上访问和覆盖我的应用程序数据库是否安全?或者有限制吗?

最佳答案

我认为这没有问题,因为您正在访问应用程序数据专用的目录,并且一旦应用程序被删除,它们就会被删除,请检查此页面上的表格:

Data and file storage overview

另一方面,为什么不使用 Cloud Firestore DB,而不是支持 SQLite DB 并将其存储到 Google 驱动器,然后下载等...

只需在 FireBase CoudFirestore 上创建您的数据库即可并使用规则保护它,使用 API 将您的数据库加载到任何设备上的应用程序中,并将其本地存储在 Room DB 中,使用 Room 作为应用程序的唯一事实来源。

关于java - 是否保存替换SQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61570720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com