如何从应用程序将领域文件推送到 React Native 中的内部存储
How to Push Realm File to Internal Storage in React Native from Application
我正在开发一个应用程序,它将在 React Native 代码中共享的整个数据库文件发送到用户内部存储。为了将文件推送到 Android 上的内部存储,我正在使用 Realm 我们已经为 iOS 正确完成的代码但是对于 Android 我正在获取文件未找到 (又名。Realm 未将文件推送到内部存储 Android)
这是我到目前为止所做的
export default new Realm({
path:Platform.OS === 'ios'
? RNFS.MainBundlePath +'/www/RippleEffect.realm'
: RNFS.DocumentDirectoryPath +'/RippleEffect.realm',
schema: [apply_it,
case_study,
got_it,
got_it_2,
got_it_2_question,
got_it_2_question_answer,
got_it_question,
got_it_question_answer,
howto,
howto_screens,
info,
info_screens,
model,
profile,
profile_result,
profile_statements,
related_topic,
special_assets_table_teens,
topic_audio,
topic_equivalence,
topics,
true_story,
your_mind,
],
readOnly: true
});
使用这两个依赖项
import Realm from 'realm';
import RNFS from 'react-native-fs'
在应用程序中 Class
const App = () => {
Realm.copyBundledRealmFiles();
return (
<App/>
);
};
对于使用 React Native 和 Realm DB 的人
我通过将领域文件从资产文件夹推送到内部文件夹(用户移动)解决了这个问题,因此我能够阅读有关数据库的文章。
File dbDirectory = new File(MainApplication.getFileDirectory() + "/db");
/**
* Check for database
* directory
*/
if(!dbDirectory.exists()){
if(dbDirectory.mkdirs()){
moveDBFileToCard("database.realm");
}
}
private void moveDBFileToCard(String databaseFileName) {
try{
AssetManager assetsManagerFiles = getAssets();
/**
* Intialize Stream
*/
InputStream inputStream;
OutputStream outputStream;
inputStream = assetsManagerFiles.open(databaseFileName);
System.out.println("File Path = " + MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
File fileDB = new File(MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
if (fileDB.exists()) {
fileDB.delete();
}
outputStream = new FileOutputStream(MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
byte[] buffer = new byte[1024];
int read;
while ((read = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, read);
}
inputStream.close();
outputStream.flush();
outputStream.close();
}catch (IOException io){
io.printStackTrace();
}
}
也删除了
readOnly: true from file 因为它在 0.60 版本上给过滤查询带来了问题
我正在开发一个应用程序,它将在 React Native 代码中共享的整个数据库文件发送到用户内部存储。为了将文件推送到 Android 上的内部存储,我正在使用 Realm 我们已经为 iOS 正确完成的代码但是对于 Android 我正在获取文件未找到 (又名。Realm 未将文件推送到内部存储 Android)
这是我到目前为止所做的
export default new Realm({
path:Platform.OS === 'ios'
? RNFS.MainBundlePath +'/www/RippleEffect.realm'
: RNFS.DocumentDirectoryPath +'/RippleEffect.realm',
schema: [apply_it,
case_study,
got_it,
got_it_2,
got_it_2_question,
got_it_2_question_answer,
got_it_question,
got_it_question_answer,
howto,
howto_screens,
info,
info_screens,
model,
profile,
profile_result,
profile_statements,
related_topic,
special_assets_table_teens,
topic_audio,
topic_equivalence,
topics,
true_story,
your_mind,
],
readOnly: true
});
使用这两个依赖项
import Realm from 'realm';
import RNFS from 'react-native-fs'
在应用程序中 Class
const App = () => {
Realm.copyBundledRealmFiles();
return (
<App/>
);
};
对于使用 React Native 和 Realm DB 的人
我通过将领域文件从资产文件夹推送到内部文件夹(用户移动)解决了这个问题,因此我能够阅读有关数据库的文章。
File dbDirectory = new File(MainApplication.getFileDirectory() + "/db");
/**
* Check for database
* directory
*/
if(!dbDirectory.exists()){
if(dbDirectory.mkdirs()){
moveDBFileToCard("database.realm");
}
}
private void moveDBFileToCard(String databaseFileName) {
try{
AssetManager assetsManagerFiles = getAssets();
/**
* Intialize Stream
*/
InputStream inputStream;
OutputStream outputStream;
inputStream = assetsManagerFiles.open(databaseFileName);
System.out.println("File Path = " + MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
File fileDB = new File(MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
if (fileDB.exists()) {
fileDB.delete();
}
outputStream = new FileOutputStream(MainApplication.getFileDirectory() + "/db" + "/" + databaseFileName);
byte[] buffer = new byte[1024];
int read;
while ((read = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, read);
}
inputStream.close();
outputStream.flush();
outputStream.close();
}catch (IOException io){
io.printStackTrace();
}
}
也删除了
readOnly: true from file 因为它在 0.60 版本上给过滤查询带来了问题