如何在React native中备份/恢复SQLite数据库

时间:2018-06-18 06:27:19

标签: react-native sqlite react-native-android react-native-ios

我使用andpor/react-native-sqlite-storage来管理React native中的SQLite数据库。现在我想将我的所有数据库备份到加密文件中,然后在以后恢复。我知道如何在android中执行此操作但不知道如何在本机中实现此功能。

如果它在android下面代码可以帮助我备份数据库而不加密。

 final String inFileName = "/data/data/<your.app.package>/databases/foo.db";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);

String outFileName = Environment.getExternalStorageDirectory()+"/database_copy.db";

// Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);

// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer))>0){
    output.write(buffer, 0, length);
}

// Close the streams
output.flush();
output.close();
fis.close();

所以我的问题是如何在React Native上做到这一点。如果有可用的图书馆,请建议我。

1 个答案:

答案 0 :(得分:2)

使用react-native-fs包,也可以在react-native中采用相同的方法。

import RNFS from 'react-native-fs';

RNFS.readFile("/data/data/<your.app.package>/databases/foo.db", "base64")
    .then(value => RNFS
        .getAllExternalFilesDirs()
        .then(path => RNFS.writeFile(path + "/" + "database_copy.db", value, "base64"))
        .then(() => console.log("Successful"))
    )