rnfs.exists()始终返回true



我正在使用react-native-fs,并且由于某些原因,每当我使用endists()方法时,它始终返回为true。我的代码样本看起来像这样:

let path_name = RNFS.DocumentDirectoryPath + "/userdata/settings.json";
if (RNFS.exists(path_name)){
    console.log("FILE EXISTS")
    file = await RNFS.readFile(path_name)
    console.log(file)
    console.log("DONE")
}
else {
    console.log("FILE DOES NOT EXIST")
}

控制台上的输出是"文件存在",然后抛出一个错误,说:

错误:enoent:没有这样的文件或目录,打开 /data/data/com.test7/files/userdata/setting.json'

使用exists方法如何存在,而不是readFile方法?

在进一步检查时,无论文件名是什么,RNFs.exists()似乎总是返回真实。为什么总是返回true?

path_name的显示 /data/data/com.test7/files/userdata/settings.json

即使我将代码更改为诸如以下代码之类的无意义的内容:

if (RNFS.exists("blah")){
    console.log("BLAH EXISTS");
} else {
    console.log("BLAH DOES NOT EXIST");
}

它仍然评估为true并显示消息:

BLAH EXISTS

我已经显示了目录的内容并验证了这些文件。

那是因为 RNFS.exists()返回 Promise。将Promise对象放在if statement的测试中始终为真。

而是这样做:

if (await RNFS.exists("blah")){
    console.log("BLAH EXISTS");
} else {
    console.log("BLAH DOES NOT EXIST");
}

或:

RNFS.exists("blah")
    .then( (exists) => {
        if (exists) {
            console.log("BLAH EXISTS");
        } else {
            console.log("BLAH DOES NOT EXIST");
        }
    });

相关内容

  • 没有找到相关文章

最新更新