0

我尝试使用 Phonegap getFile 和 createWriter 函数在 iOS 应用程序(phonegap 2.1 + jquerymobile)上编写大文件。

在包含数据 JSON 的数组的“for”循环中,我有一个“getFile”函数,它在我的 fileSystem 目录中创建每个文件。(这是工作)在我的“getFile”函数中,我调用了调用phonegap createWriter 函数并写入数组数据文件的成功回调。(问题就在这里)

我的问题是所有文件都包含最后一个数组数据。我怎样才能给每个文件提供好的数据?

我的代码:

fileSystem.root.getDirectory("directory",{create: true},
     function(entry){
              console.log('getDirectory success');
              entry.getDirectory("subdirectory", {create: true},
              function(entry){
                       console.log('subdirectory success');
                       for(var i=0, len= dataJson.length;i < len ; i++){
                           data = dataJson[i];
                           fullPath =data["data_id"]+".txt";
                           entry.getFile(fullPath, {create: true, exclusive: false},
                                        function(fileEntry){
                                                fileEntry.createWriter(
                                                     function(writer){
                                                     writer.onwriteend = function(evt) {
                                                        console.log("writer end");
                                                     }; 
                                                     writer.write(data["data_content"]);        
                                                     writer.abort();
                                                     },
                                                     fail);
                                        }
                                        ,fail);}
                       }
              },fail);
     }
     ,fail);

谢谢您的帮助。

4

1 回答 1

1

我解决了我的问题。此代码有效:

fileSystem.root.getDirectory("directory",{create: true},
 function(entry){
          console.log('getDirectory success');
          entry.getDirectory("subdirectory", {create: true},
          function(entry){
                   console.log('subdirectory success');
                   for(var i=0, len= dataJson.length;i < len ; i++){
                       data = dataJson[i];
                       fullPath =data["data_id"]+".txt";
                       myGetFile(entry,fullPath,data);
                   }
          },fail);
 }
 ,fail);

function myGetFile(entry,fullPath,data){
        entry.getFile(fullPath,
                      {create: true, exclusive: false},
                     function(fileEntry){
                     myWriteFile(fileEntry,data);
                     },
                      fail);
    }
 function myWriteFile(fileEntry,data){
        fileEntry.createWriter(function(writer){
                               writer.onwriteend = function(evt) {
                               console.log("onwriteend");
                               };
                               writer.write(data);
                               writer.abort();
                               }, fail);
    }
于 2012-10-09T12:26:31.003 回答