Cordova plugins 如何获取文件条目,然后在cordova/ionic(2)中使用readAsText?

Cordova plugins 如何获取文件条目,然后在cordova/ionic(2)中使用readAsText?,cordova-plugins,ionic2,Cordova Plugins,Ionic2,在我的Ionic2应用程序中,我成功地使用了文件插件的某些方法,例如: 检查目录 createDir 创建文件 现在我想使用readAsText(如指定),但我不知道如何在不创建新文件的情况下获取文件项(显然需要覆盖它)?下面是一个使用readAsText()函数的示例,如果您知道文件的路径: const fs:string = cordova.file.externalRootDirectory; File.readAsText(fs, filePath).then((contents)

在我的Ionic2应用程序中,我成功地使用了文件插件的某些方法,例如:

  • 检查目录
  • createDir
  • 创建文件

现在我想使用readAsText(如指定),但我不知道如何在不创建新文件的情况下获取文件项(显然需要覆盖它)

下面是一个使用
readAsText()
函数的示例,如果您知道文件的路径:

const fs:string = cordova.file.externalRootDirectory;

File.readAsText(fs, filePath).then((contents) => {
    if(typeof contents == 'string'){
        processFile(contents);
    }
});
一个小问题是文件路径不能以
/
开头

例如,在处理目录中的文件时可能会遇到这种情况

const fs:string = cordova.file.externalRootDirectory;

File.listDir(fs, "").then(files => {      
    for (let file of files){
        if(file.name.toLowerCase().endsWith(".csv")){  
            File.readAsText(fs, file.fullPath.substr(1)).then((contents) => {
                if(typeof contents == 'string'){
                    processFile(contents);
                }
            });
        }
    }
});

您可以使用

如果您的URI以“content://”开头,则需要以“file://”开头的本地文件URI

FilePath.resolveNativePath返回本地文件url

let uri = "content://com.android.externalstorage.documents/document/primary/data...";

window.FilePath.resolveNativePath(uri, (localFileUri) => {
   // result is file:///storage/emulated/0/Android/data/...
   // now get a fileEntry from this uri
   window.resolveLocalFileSystemURL(localFileUri, (fileEntry) => {

   });
});
文件条目,有一个方法“File”,可用于获取文件对象并使用FileReader读取文件内容,例如:

fileEntry.file((file) => {
    var reader = new FileReader();
    reader.onloadend = (e) => {
       let result =  e.target.result; // text content of the file
       // do whatever you like 
    };
reader.readAsText(file);