特别注意:关于某些手机【我用的华为Mate10】找不到创建的文件位置,这点有时候真无奈!华为基本没有给用户这种权限!【程序执行是成功的】
参考网址:Cordova官网文档:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html
Blog用法:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
FileReader用法:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
案例说明:【由于需要随时获取read文件的数据,所以用Promise来抓取数据把异步转换为同步返回数据】
class CordovaFile {
static createFileWriteMnemonic ( fileName, dataObj ) {
document.addEventListener( 'deviceready', () => {
window.requestFileSystem( window.TEMPORARY, 5 * 1024 * 1024, function ( fs ) {
let dirEntry = fs.root;
// 如果文件不存在就创建,如果存在直接打开!
dirEntry.getFile( fileName, { create: true, exclusive: false }, function ( fileEntry ) {
CordovaFile._writeFile( fileEntry, dataObj );
}, CordovaFile._errorCallback );
}, CordovaFile._errorCallback );
}, false );
}
static getFileReadMnemonic ( fileName ) {
return new Promise( function ( resolve, reject ) {
document.addEventListener( 'deviceready', () => {
window.requestFileSystem( window.TEMPORARY, 5 * 1024 * 1024, function ( fs ) {
let dirEntry = fs.root;
// 如果文件不存在就创建,如果存在直接打开!
dirEntry.getFile( fileName, { create: true, exclusive: false }, function ( fileEntry ) {
CordovaFile._readFile( fileEntry, resolve, reject );
}, CordovaFile._errorCallback );
}, CordovaFile._errorCallback );
}, false );
} );
}
static _writeFile ( fileEntry, dataObj ) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter( function ( fileWriter ) {
fileWriter.onerror = function ( e ) {
console.log( 'Failed file write: ' + e.toString() );
};
// If data object is not passed in,
// create a new Blob instead.
if (!dataObj) {
// 参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
dataObj = new Blob( ['some file data'], { type: 'text/plain' } );
}
fileWriter.write( dataObj );
} );
}
static _readFile ( fileEntry, resolve, reject ) {
fileEntry.file( function ( file ) {
//参考:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
var reader = new FileReader();
// // 监听读取完毕的结果,返回失败的Promise
reader.onerror = function () {
reject( this.error );
};
// 监听读取完毕的结果,返回成功的Promise
reader.onloadend = function () {
resolve( this.result );
};
reader.readAsText( file );
}, CordovaFile._errorCallback );
}
static _errorCallback ( error ) {
alert( 'ERROR: ' + error.code );
}
}
CordovaFile.createFileWriteMnemonic( 'mnemonic.json', { mnemonic: '12个单词' } );
CordovaFile.getFileReadMnemonic( 'mnemonic.json' ).then( ( result ) => {
console.log( 'result', result );
} );