在我Ionic2程序,我設法成功地使用文件的插件的一些方法,如:如何獲得fileEntry然後在cordova/ionic(2)中使用readAsText?
- checkDir
- createDir
- CREATEFILE
現在我想用readAsText(如指定in the docs),但我無法弄清楚如何獲得一個fileEntry而不創建一個新的文件,(這顯然需要覆蓋它)?
在我Ionic2程序,我設法成功地使用文件的插件的一些方法,如:如何獲得fileEntry然後在cordova/ionic(2)中使用readAsText?
現在我想用readAsText(如指定in the docs),但我無法弄清楚如何獲得一個fileEntry而不創建一個新的文件,(這顯然需要覆蓋它)?
下面是使用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);
}
});
}
}
});
您可以通過使用cordova-plugin-filepath
得到FileEntry的如果你有一個URI開始「內容://」,我們需要的本地文件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) => {
});
});
文件條目,具有可用於獲取一個文件對象和讀取的FileReader該文件的內容的方法「文件」,e.g:
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);