Phonegap 2.1 iOS:如何使用createWriter从数组循环中编写大文件

时间:2012-10-08 13:29:37

标签: jquery cordova filewriter

我尝试使用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);

感谢您的帮助。

1 个答案:

答案 0 :(得分: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);
    }