这是我正在尝试的函数。
saveFile = () => {
let filename = Expo.FileSystem.documentDirectory + "text.txt";
Expo.FileSystem.writeAsStringAsync(filename, "Hello World");
}
loadFile = () => {
let filename = Expo.FileSystem.documentDirectory + "text.txt";
let str = Expo.FileSystem.readAsStringAsync(filename, "Hello World");
//alert(str);
}
警告:
[Unhandled promise rejection: Error: Argument of an incompatible class: class java.lang.String cannot be passed as an argument to parameter expecting interface java.util.Map.]
但需要注意的是,有人知道如何做吗?
-------------更新:控制台输出--------------
[15:27:36] Promise {
[15:27:36] "_40": 0,
[15:27:36] "_55": null,
[15:27:36] "_65": 0,
[15:27:36] "_72": null,
[15:27:36] }
------------------更新:代码更新---------------
saveFile = async () => {
let filename = Expo.FileSystem.documentDirectory + "text.txt";
await FileSystem.writeAsStringAsync(filename, "Hello World", { encoding: FileSystem.EncodingTypes.UTF8 });
}
loadFile = async () => {
let filename = Expo.FileSystem.documentDirectory + "text.txt";
file = await FileSystem.readAsStringAsync(filename, { encoding: FileSystem.EncodingTypes.UTF8 });
return file;
}
getTextFromFile = () => {
value = this.loadFile();
alert(value);
console.log(value);
}
“Hello World”似乎没有被写入文件中。
------------ 更新 -------------
我添加了一行,文本.txt文件出现在我的Android模拟器的Document / DCIM / text.txt中,但是是否必须使用“MediaLibrary.createAssetAsync”,如果是,如何控制文件夹名称?
await MediaLibrary.createAssetAsync(`${FileSystem.documentDirectory}text.txt`);
Expo.Filesystem.readAsStringAsync
方法传递一个额外的参数 "Hello World",而该方法只需要文件名参数。我怀疑它将你的 "Hello World" 字符串视为一个options
对象,定义了文件应该如何读取,正如 Expo 文档中所述。 - iridescent