java导出sqlite_java – 在Android上简单导出和导入SQLite数据库

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 19:15   1146   0

我在SQLiteOpenHelper中使用这个代码在我的一个应用程序中导入数据库文件。

编辑:我粘贴我的FileUtils.copyFile()方法到问题。

SQLiteOpenHelper

public static String DB_FILEPATH = "/data/data/{package_name}/databases/database.db";

/**

* Copies the database file at the specified location over the current

* internal application database.

* */

public boolean importDatabase(String dbPath) throws IOException {

// Close the SQLiteOpenHelper so it will commit the created empty

// database to internal storage.

close();

File newDb = new File(dbPath);

File oldDb = new File(DB_FILEPATH);

if (newDb.exists()) {

FileUtils.copyFile(new FileInputStream(newDb), new FileOutputStream(oldDb));

// Access the copied database so SQLiteHelper will cache it and mark

// it as created.

getWritableDatabase().close();

return true;

}

return false;

}

FileUtils

public class FileUtils {

/**

* Creates the specified toFile as a byte for byte copy of the

* fromFile. If toFile already exists, then it

* will be replaced with a copy of fromFile. The name and path

* of toFile will be that of toFile.

*

* Note: fromFile and toFile will be closed by

* this function.

*

* @param fromFile

* - FileInputStream for the file to copy from.

* @param toFile

* - FileInputStream for the file to copy to.

*/

public static void copyFile(FileInputStream fromFile, FileOutputStream toFile) throws IOException {

FileChannel fromChannel = null;

FileChannel toChannel = null;

try {

fromChannel = fromFile.getChannel();

toChannel = toFile.getChannel();

fromChannel.transferTo(0, fromChannel.size(), toChannel);

} finally {

try {

if (fromChannel != null) {

fromChannel.close();

}

} finally {

if (toChannel != null) {

toChannel.close();

}

}

}

}

}

如有必要,请不要忘记删除旧的数据库文件。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP