this.file.listDir не возвращает папки под applicationStorageDirectory - PullRequest
0 голосов
/ 26 марта 2019

, когда я пытаюсь составить список каталогов папок с помощью файла native-native, в результате я не получаю никаких папок.

Мой код:

this.platform.ready().then(() => {
      this.filesystem.listDir(this.filesystem.applicationStorageDirectory, '').then((result) => {
       console.log(result);
        /*result will have an array of file objects with 
        file details or if its a directory*/
        for (let file of result) {
          if (file.isDirectory == true && file.name != '.' && file.name != '..') {
            console.log("This is a folder");
            // Code if its a folder
          } else if (file.isFile == true) {
            // Code if its a file
            console.log("This is a file");
            let name = file.name // File name
            console.log("file name: " + name);
           // let path = file.path // File path
            file.getMetadata(function (metadata) {
              let size = metadata.size; // Get file size
            })
          }
        }
     });
    });

Я использую: "@ ionic-native / file": "4.12.0", с импортом: import {File} from '@ ionic-native/ файл ';

1 Ответ

0 голосов
/ 26 марта 2019

Вы не передали имя каталога в this.filesystem.listDir(this.filesystem.applicationStorageDirectory, ''), вы должны передать имя каталога в этом методе.Вы можете получить имя каталога из this.filesystem.applicationStorageDirectory.Сначала предупредите this.filesystem.applicationStorageDirectory и проверьте, какой тип пути вы получаете.

Если путь имеет вид:

file: /// storage / emulator / 0 / somefolder

, тогда получите имя каталога следующим образом:

let appStorageDir = "file:///storage/emulator/0/somefolder";
let dirName = appStorageDir.substring(appStorageDir.lastIndexOf("/")+1);

Если в последнем пути есть косая черта (/), например:

file: /// storage / emulator / 0 / somefolder /

затем получите имя каталога следующим образом:

let appStorageDir = "file:///storage/emulator/0/somefolder/";
appStorageDir = appStorageDir.substring(0,appStorageDir.lastIndexOf("/"));
let dirName = appStorageDir.substring(appStorageDir.lastIndexOf("/")+1);

Теперь передайте это dirName в методе следующим образом:

this.filesystem.listDir(this.filesystem.applicationStorageDirectory, dirName)

Надеюсь, это поможет вам !!!

...