在我的Ionic2应用程序中,我设法成功使用了File插件的某些方法,例如:
现在我想使用 readAsText (如指定的in the docs)但我无法弄清如何在不创建新文件的情况下获取fileEntry(显然会需要覆盖它)?
答案 0 :(得分:1)
如果您知道文件的路径,则使用readAsText()
函数的示例如下:
const fs:string = cordova.file.externalRootDirectory;
File.readAsText(fs, filePath).then((contents) => {
if(typeof contents == 'string'){
processFile(contents);
}
});
一个轻微的 gotcha 是文件路径不能以/
开头。
这可能会抓住你的一个例子是处理目录中的文件;
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);
}
});
}
}
});
答案 1 :(得分:1)
如果您的URI以" content:// "开头,我们需要以"文件://&...开头的本地文件URI #34; 。
FilePath.resolveNativePath 返回本地文件网址。
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);