我不是风
我不是风
  • 发布:2016-08-19 09:38
  • 更新:2016-08-19 14:04
  • 阅读:1900

HTML5+ IO

分类:HTML5+
IO

用HTML5+ IO读取文件时,为什么当读取的文件状态为2(文件读取完成)时,onload和onloadend方法都不运行了呢?读取文件的流程又是怎样的?也是异步吗?请求高手帮我解决疑惑,谢谢!

2016-08-19 09:38 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

请提供完整的示例,我这边测试下。

  • 我不是风 (作者)

    代码在下面有粘过来,数据最好是4、5条左右,辛苦您了!

    2016-08-19 13:56

我不是风

我不是风 (作者)

//向手机中写入数据  
function save () {  
            //文件名  
            var fileName = "ajxx-" new Date().getTime() ".json";  
            //封装暂存数据  
            var obj = new getAjxx(fileName);  
            //将数据放于缓存中  
            var list = [];  
            list.push(obj);  

            //将数据存于手机存储卡上  
            plus.io.requestFileSystem( plus.io.PUBLIC_DOCUMENTS, function( fs ) {  
                // 可通过fs操作PUBLIC_DOCUMENTS文件系统 ,通过fs.root获取DirectoryEntry对象进行操作   
                var files = fs.root;  

                // fs.root是根目录操作对象DirectoryEntry  
                fs.root.getFile(fileName,{create:true}, function(fileEntry){  
                    fileEntry.createWriter( function ( writer ) {  
                        //定位文件操作位置,有效值为0到文件的总长度减1。 0表示文件的起始位置  
                        writer.seek( writer.length-1 );  
                        //向文件中写内容  
                        writer.write(JSON.stringify(list));  
                        //暂存成功  
                        mui.alert("暂存成功");  
                        mui.back();  
                    }, function ( e ) {  
                        alert( e.message );  
                    });  
                });   

            }, function ( e ) {  
                alert( "Request file system failed: "   e.message );  
            });  

        }  

//创建对象  
function getAjxx(fileName){  
            var zcsj = getCurrDate();  
            //封装数据    
            this.fileName = fileName;   //存放文件名,备删除时使用  
            this.zcsj = "2016-08-19 13:05:08";            //暂存时间,用户在列表中展示,当上报时并不会传到后台  
            this.wtdlName = "测试数据1";  
            this.wtxlName = "测试数据2";  
            //所属街道  
            this.ssjdmc = "测试数据0";  
        }  

//从手机中读取数据  
function getData () {  
                //将数据存于本地sd卡上  
                plus.io.requestFileSystem( plus.io.PUBLIC_DOCUMENTS, function( fs ) {  
                // 可通过fs操作PUBLIC_DOCUMENTS文件系统 ,通过fs.root获取DirectoryEntry对象进行操作   
                var files = fs.root;  
                // 创建读取目录信息对象 得到该文件夹下的所有文件  
                var directoryReader = fs.root.createReader();  
                directoryReader.readEntries( function( entries ){  
                    //如果该文件夹下没有文件则提示没有更多数据,否则读入文件内容  
                    for(var i=0; i < entries.length; i   ) {  
                        // fs.root是根目录操作对象DirectoryEntry  
                        fs.root.getFile(entries[i].name,{create:false}, function(fileEntry){  

                            fileEntry.file( function(file){  
                                var fileReader = new plus.io.FileReader();  
                                fileReader.readAsText(file, 'utf-8');  
                                console.info("读取后返回状态:" fileReader.readyState "返回结果**" fileReader.result);  

                                //当读取文件的状态fileReader.readyState=2(完成时),fileReader.onloadend没执行,但数据得到了  
                                if (null != fileReader.result   

该问题目前已经被锁定, 无法添加新回复