Как использовать FileSystem.getInfoAsync () с Expo? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь проверить, существует ли файл с expo.

Это выставочный документ: Возвращает Если в этом URI нет элемента, возвращается {существует: ложь, isDirectory: ложь}. Остальное возвращает объект

if (this._liste.length === 0) {
               let tmp =FileSystem.getInfoAsync('file://exemple.json');

                if(tmp.exists === false){
                    alert("not found")
                }
            }

Файл не существует, я уверен, и предупреждение не отображается. Когда я печатаю tmp, у меня есть Object , но когда я печатаю tmp.exist, у меня есть undefined .

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

getInfoAsync () возвращает это (пример):

Object {
 "exists": 1,
 "isDirectory": true, // notice isDirectory == true
 "modificationTime": 1532926143,
 "size": 102,
 "uri": "file:///var/mobile/Containers/Data/Application/9D3661AF-8EB5-49F5-A178-3ECA0F96BEEC/Documents/ExponentExperienceData/%2540anonymous%252FWAMS-1163fc3b-4484-44a2-9076-b4b71df1e55c/avatar/",
}

Если вы хотите прочитать, какие файлы находятся в каталоге, используйте FileSystem.readDirectoryAsync

0 голосов
/ 01 июля 2019

getInfoAsync - это асинхронная функция, поэтому вы не можете использовать ее как обычную функцию. Он возвращает Обещание, поэтому вам нужно либо использовать await, либо:

ждать

let tmp = await FileSystem.getInfoAsync('file://exemple.json');
// use tmp.exists

тогда

FileSystem.getInfoAsync('file://exemple.json').then(tmp => {
// use tmp.exists
});
...