Cordova安卓之插件cordova-plugin-file文件读取操作【注:执行完毕成功了,但你的手机可能找不到文件的位置】

特别注意:关于某些手机【我用的华为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 );
} );

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值