phonegap文件阅读器出现未知错误

时间:2013-09-11 13:27:17

标签: javascript android cordova filereader

使用phonegap 2.9.0,使用此回调来读取文件:

    fBrowse.params.on_file_select = function(file){     // file: FileEntry  
        try{
            var reader = new FileReader();
            jsIQ.msg('loading game!..');
            reader.onload = function(evt) {
                // success
                var game = null;
                // remove garbage from string
            jsIQ.msg('loading game!3..' + arguments.length);
            jsIQ.msg('loading game!3/2: ' + evt.target.result);
            //jsIQ.msg('data: ' + evt.target.result, 2);
                var s = $.trim(B64.decode(evt.target.result));
            jsIQ.msg('loading game!4..');
                s = s.substr(0, s.indexOf('}')+ 1);
            jsIQ.msg('loading game!5..');
                game = JSON.parse( s );
                if (game != null) {
                    // success!
                    $('#fBrowse').hide();
                    jsIQ.msg('Load game success', 2);
                    jsIQ.triggerEvent('heart_game_loaded', {data: game});
                }
            };
            reader.onerror = function(){
                alert('error reading file');
            };
            jsIQ.msg('loading game!2..');
            file.file(function(f){
                reader.readAsText(f);
            }, function(){
                alert('Error opening file');
            });
        } catch (e){
            jsIQ.msg('loadgame err: ' + e.message, 2);
            alert('Внутренняя ошибка');
        }
        //return true;
    };

我看到这个日志文件内容:

...

[ - ] 17:1:26.257加载游戏文件:/mnt/sdcard/heartofice/heartofice2.savegame

[ - ] 17:1:26.260加载游戏!..

[ - ] 17:1:26.262加载游戏!2 ..

[ - ] 17:1:26.270加载游戏!3..1

这意味着,

evt.target.result

在没有任何通知的情况下出现错误! “evt”已经传递给成功读取回调,但我不能使用它?

这发生在真正的Android设备(4.0.3)

尝试使用onload回调中的“reader.result”,但行为相同!

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

jsIQ.msg使用FileWriter将数据放入日志

所以,当我“得到一个文件”时,我发信息给它记录 - 这会打破“readed file”的链接,并且它已经过时了。

因此,永远不要使用组合:

  1. 获取文件#1以供阅读
  2. 获取文件#2进行写入,写入
  3. 读取文件#1
  4. 此行为的原因未知......