反应本机 fs 库不写文件
react native fs library not writing files
当我使用 react-native-fs 创建文件时,回调成功但文件不在我的 android/data/com.myapp/files/test.txt 库中。
logcat 中没有错误所以我想知道为什么我的简单 App.js 代码不起作用。
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
TouchableOpacity,
ToastAndroid
} from 'react-native';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
var RNFS = require('react-native-fs');
// create a path you want to write to
var path = RNFS.DocumentDirectoryPath + '/test.txt';
export default class App extends Component {
onSave = () => {
RNFS.writeFile(path, 'Lorem ipsum dolor sit amet', 'utf8')
.then((success) => {
console.log('FILE WRITTEN!');
})
.catch((err) => {
console.log(err.message);
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<TouchableOpacity onPress={() => this.onSave()}>
<Text style={styles.instructions}>
To get started, edit App.js
</Text>
</TouchableOpacity>
<Text style={styles.instructions}>
{instructions}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
我需要将 log.txt 写入应用程序文件夹,但无法创建新文件。
我将不胜感激任何帮助或建议。
react-native init myapp
cd myapp
yarn add react-native-fs
react-native link react-native-fs
react-native run-android
您可以尝试用 ExternalStorageDirectoryPath.
替换 DocumentDirectoryPath
您可以尝试使用 RNFS.LibraryDirectoryPath
var url = path
let fileName = path.split("/").pop()
// console.log('fileName', fileName)
var ext = this.extention(url);
ext = "." + ext[0];
const localFile = ${RNFS.LibraryDirectoryPath}/${fileName}
;
// console.log('localFile', localFile)
const options = {
fromUrl: path,
toFile: localFile,
fileCache: true
};
if (await RNFS.exists(localFile)) {
FileViewer.open(localFile, { displayName: this.props.route.params.conversationSubject });
} else {
await RNFS.downloadFile(options).promise
.then((res) => {
// console.log('res', res)
FileViewer.open(localFile);
})
.then((res) => {
// success
// console.log("success", res);
})
.catch(error => {
// error
console.log("Attachment open error: ", error);
});
}
当我使用 react-native-fs 创建文件时,回调成功但文件不在我的 android/data/com.myapp/files/test.txt 库中。
logcat 中没有错误所以我想知道为什么我的简单 App.js 代码不起作用。
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
TouchableOpacity,
ToastAndroid
} from 'react-native';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
var RNFS = require('react-native-fs');
// create a path you want to write to
var path = RNFS.DocumentDirectoryPath + '/test.txt';
export default class App extends Component {
onSave = () => {
RNFS.writeFile(path, 'Lorem ipsum dolor sit amet', 'utf8')
.then((success) => {
console.log('FILE WRITTEN!');
})
.catch((err) => {
console.log(err.message);
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<TouchableOpacity onPress={() => this.onSave()}>
<Text style={styles.instructions}>
To get started, edit App.js
</Text>
</TouchableOpacity>
<Text style={styles.instructions}>
{instructions}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
我需要将 log.txt 写入应用程序文件夹,但无法创建新文件。 我将不胜感激任何帮助或建议。
react-native init myapp cd myapp yarn add react-native-fs react-native link react-native-fs react-native run-android
您可以尝试用 ExternalStorageDirectoryPath.
替换 DocumentDirectoryPath您可以尝试使用 RNFS.LibraryDirectoryPath
var url = path let fileName = path.split("/").pop() // console.log('fileName', fileName) var ext = this.extention(url); ext = "." + ext[0]; const localFile =
${RNFS.LibraryDirectoryPath}/${fileName}
; // console.log('localFile', localFile)const options = { fromUrl: path, toFile: localFile, fileCache: true }; if (await RNFS.exists(localFile)) { FileViewer.open(localFile, { displayName: this.props.route.params.conversationSubject }); } else { await RNFS.downloadFile(options).promise .then((res) => { // console.log('res', res) FileViewer.open(localFile); }) .then((res) => { // success // console.log("success", res); }) .catch(error => { // error console.log("Attachment open error: ", error); }); }