3

この質問は以前に何度も聞かれたことは知っていますが、とにかく理解できません。SDカード(Android 4)のディレクトリにテキストファイルを書き込むことはできますが、次のコードを使用して再度読み取る方法はありません:

function get_file () {  
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFilesystem, fail);
}   
function getFilesystem(fs) {
alert("getFilesystem -> backup.txt");  // OK !
// alert("filesystem.name: "+fileSystem.name);  // = persistent
// alert("filesystem.root.name: "+fileSystem.root.name);  // = long number
    // 
fs.root.getFile("../../../../../../sdcard/test/backup.txt", {create: false, exclusive: false}, 
    function(fileEntry) {
      alert(fileEntry.fullPath); // shows that my path is appended to "data/.."
      fileEntry.file(function(file) {
      var reader = new FileReader();
      reader.onloadend = function(evt) {
        alert(+evt.target.result);  // NOT SHOWING !        
          };
        reader.readAsText(file);
    }, fail);
}, fail);
}

この一連の ../ を使用して、ライター関数を使用してファイルをディレクトリ sdcard/test に書き込みました。これは見苦しいコードですが、機能しています。

しかしfs.root.getFile、同じようには機能しません。返されるフルパス情報は、指定されたパスが「/data/data/com.appname/files」に追加されていることを示していますが、それを置き換えません!

アラートメッセージもエラーメッセージも表示されなかったため、onloadend関数は明らかに機能していません。パスを「file:///sdcard/test」または「sdcard/test」に変更しても効果はありません。

どんな助けでも大歓迎です - 事前に感謝します! クリス

4

2 に答える 2

0

ディレクトリにアクセスするには (Android 4.0、Samsung Note 8)、/data/data/com.app-name/files/apps/(ランダム番号) から文字通りすべてのディレクトリに移動する必要がありました。 / 次を選択して SD カードに戻ります。

 fs.root.getFile("../../../../../../sdcard/test/backup.txt", ...

mosync Reload クライアントで。

mosync apk を使用してアプリを「コンパイル」するのに必要なのは、「../」の 4 回だけです。これは、そこにあるファイル階層がリロード クライアントよりも低いためです。いずれにせよ、ファイル エクスプローラーでチェックインする必要があります (ルート アクセスが必要です)。それとは異なるのは、phonegap を使用してクラウドでコンパイルする場合です。実際、ルート パスは sdcard です。その後、私が知る限り、データディレクトリに移動できません。

このパスは、mosync の書き込みと読み取りで機能します。私の間違いは、テキスト ファイル内に改行文字 "\n" が含まれていたことです。この場合、私はそれを書くことができましたが、リーダーはエラー メッセージなしで停止します。

それが他の誰かにも役立つことを願っています!

クリス

于 2014-03-04T09:06:15.520 に答える
0

PHONEGAP ドキュメントを参照してください

これから、sdcard からファイルを取得する実際の例を取得します。ファイルのダウンロードに問題がある場合は、LINKを参照してください。

「/sdcard/backup.txt」の代わりに「backup.txt」のみを使用してみてください。

それはうまくいくようです。

PhoneGap はパスの詳細を処理し、ディレクトリも処理します。

于 2014-02-28T07:18:16.083 に答える