0

Phonegap getFile および createWriter 関数を使用して、iOS アプリ (phonegap 2.1 + jquerymobile) に巨大なファイルを書き込もうとしています。

データJSONを含む配列の「for」ループには、fileSystemディレクトリに各ファイルを作成する「getFile」関数があります。(それは仕事です)私の「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 に答える