3

Chromebook で無料の Chrome Dev Editor をいじっています。を使用しfileSystemて .txt ファイルを読み書きしようとしています。それはすべて非常にまとめられており、C のようにはまったくなりません。何かをすることが許されているかどうかさえわかりません。

Files を使用して表示できるファイルは、再生が許可されているサンドボックス (アプリからアクセスできるフォルダーを意味しますか?) にあると思います。ルートは Downloads と呼ばれます。案の定、developer.chrome.com/apps/filesystem の例のように、すべてのドット呼び出しとコールバック引数を読み取りに使用すると、機能します。しかし、読み取りと書き込みの両方で毎回プロンプトを表示する必要があります。

もう少しグーグルがこのトリックを思いついた:(実際、これはstackoverflowにあったと思う)chrome.runtime呼び出し 、getPackagedDirectoryEntryそれは私のアプリのフォルダへのハンドルを私に与えるようだ。すごい!プロンプトを通過する必要がないようにする必要があるのはそれだけです。とにかく、readfileの場合。

しかし、同じトリックを writefile に適用しようとしてもうまくいきませんでした。実際、それは何も識別できませんでした。エラーも苦情もありません。何もない。プロンプト付きの書き込みファイルは正常に動作しますが (おそらく、パーミッションと Blob 構築権を持っていると思われます)。

これが私のコードです:

function test(){
// Samsung 303C Chromebook - Chrome Dev Editor - /Downloads/Daily/main.js

// prompted write

  chrome.fileSystem.chooseEntry({type:'saveFile'},function(a){
    a.createWriter(function(b){
      b.write(new Blob(["Programming fun"],{type:'text/plain'}));
    },function(e){trace.innerText = 'error is ' + e;});
  });

// unprompted read

  chrome.runtime.getPackageDirectoryEntry(function(a){
    a.getFile('text.txt',{},function(b){
      b.file(function(c){
        var d = new FileReader();
        d.onloadend = function(){trace.innerText = this.result;};
        d.readAsText(c);
      });
    });
  });

// unprompted write - why not?

  chrome.runtime.getPackageDirectoryEntry(function(a){
    a.getFile('new.txt',{create:true},function(b){
      b.createWriter(function(c){
        c.write(new Blob(["Miss Manners fan"],{type:'text/plain'}));
      },function(e){trace.innerText = 'error is ' + e;});
    });
  });
}    
4

2 に答える 2