在应用程序数据中创建数据库文件

问题描述 投票:0回答:1

我读过类似的问题和答案,但没有一个对我有用。 我正在尝试将 sqlite 数据库从 assets 文件夹复制到 application 数据文件夹,但这总是失败,因为未创建目标数据库文件。

尝试1:

databasePath = context.getApplicationInfo().dataDir + "/databases/test.db";

Path path = Paths.get(databasePath);

OutputStream applicationDatabaseStream = Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE);

失败但有异常:

W/System.err: java.nio.file.NoSuchFileException: /data/user/0/eu.example.test/databases/test.db

尝试2:

databasePath = context.getApplicationInfo().dataDir + "/databases/test.db";

OutputStream applicationDatabaseStream = new FileOutputStream(databasePath);

失败但有异常:

W/System.err: java.io.FileNotFoundException: /data/user/0/eu.example.test/databases/test.db: open failed: ENOENT (No such file or directory)

这段代码有什么问题吗?

我希望代码在应用程序数据文件夹中创建文件。

java android android-sqlite fileoutputstream android-assets
1个回答
0
投票

你不能创建这样的路径。

context.getApplicationInfo().dataDir + "/databases/test.db";
dataDir 将存在,但还没有人创建数据库子目录。所以它不会存在,这意味着打开test.db将失败。您必须首先创建整个目录树。

© www.soinside.com 2019 - 2024. All rights reserved.