1

Cordova の FileWriter API と FileReader API を調べていて、それらが非同期であることを理解しています。

また、こちらの完全な例に従うだけで、FileWriter と FileReader を別々に動作させることができました。

しかし、ファイルに書き込んだ直後にファイルを読み取る方法があるかどうか疑問に思っていました。以下のコードは、私がやりたいことを示していますgotFileWriter

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.onwriteend = function(evt) {
        // Read the file after writing
    };
    writer.write("some sample text");
}

function fail(error) {
    console.log(error.code);
}

ドキュメントの完全な例の FileReader には、file何かを読み取るためのオブジェクトが必要です (gotFileWriterメソッドには参照がありません)。ただし、ファイルを読み取るための非同期プロセスのほとんどは、ファイルの書き込みと似ています。

書き込み後にファイルを読みたい場合window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);onwriteend関数内で を呼び出して、非同期プロセス全体を再度開始する必要がありますか? gotFileEntryを呼び出す別のメソッドとともにfileEntry.file()? または、これらの手順を繰り返さずfileにメソッド内からオブジェクトを取得する方法はありますか?gotFileWriter

誰もそれを行う最速の方法を知っていますか?

4

2 に答える 2

-3

アプリケーションの起動時にこの機能を使用します。ファイルの読み取りと書き込みを行います。それを試してみてください。

 function onDeviceReady() {
               window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
               window.resolveLocalFileSystemURI("file:///example.txt", onResolveSuccess, fail);
               var isApp = 'yes';
               var root = this;
               cb = window.plugins.childBrowser;
               call();
           }

           function onFileSystemSuccess(fileSystem) {
               console.log(fileSystem.name);
           }

           function onResolveSuccess(fileEntry) {
               console.log(fileEntry.name);
           }

           function fail(evt) {
               console.log(evt.target.error.code);
           }


           function call(){
               window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successDirectoryReader, null);

           }
function successDirectoryReader(fileSystem)
           {
               try {
                   var dirEntry = fileSystem.root;
                   var directoryReader = dirEntry.createReader();
                   directoryReader.readEntries(success,failure);
               } catch (e) {
                   alert(e);
               }
           }
于 2013-08-24T06:12:42.523 に答える