2017-12-18 27 views
2

私はreact-native-fsを使用しています。何らかの理由でexists()メソッドを使用するたびに常にTRUEとして返されます。RNFS.exists()は常に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") 
} 

コンソールに出力され、エラーが言うようスローされ、「FILE EXISTS」:

Error: ENOENT: no such file or directory, open /data/data/com.test7/files/userdata/settings.json'

は、どのようにそれがexistsメソッドを使用して存在することができます私のコードのサンプルは、次のようになります、readFileの方法はありませんか?

さらにチェックすると、RNFS.exists()はファイル名に関係なく常にtrueを返すようです。なぜそれはいつも真実に戻っていますか?

path_nameの表示には/data/data/com.test7/files/userdata/settings.jsonと表示されます。

は、私は次のコードのような無意味なものに私のコードを変更しても:私はディレクトリの内容を表示しています

BLAH EXISTS 

:それはまだtrueに評価され、

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

はメッセージを表示しますこれらのファイルが存在しないことを確認します。 RNFS.exists()Promiseを返すためです

+0

を興味深い – Val

+0

@valを修正していないように見えるエラー・ログから、 'path_name''上console.log'を試してみてください、それは '言います/ data/data/com.test7/files/userdata/settings.json'と入力します。なぜそれが/ dataを2回持っているのか、それが何であるべきかわからない。 – kojow7

+0

@Valまた、私のテストではDocumentDirectoryPathのスペルミスが原因であったと思いますが、私はもともと私のエラーメッセージに 'undefined'を持っていました。それは今修正され、私はそれに応じて私の質問を調整しました。 – kojow7

答えて

2

Promiseのオブジェクトをif statementのテストに置くと、常にtrueになります。

ではなく、これを実行します。

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"); 
     } 
    }); 
関連する問題