2

入力を受け入れる Android プログラムを作成し、携帯電話の内部ストレージにあるファイルにデータを書き込もうとしています。エミュレーターでプログラムを実行すると、期待どおりにファイルが作成されますが、電話で実行しようとすると、ファイルが作成されないようです。私はこのサイトを見回しましたが、私の問題の解決策がどこにも見つからないようです (似たようなものはいくつかありますが、私にとっては何もうまくいきませんでした)。間違っている。

FileOutputStream fos = null;
String x = "Sample String";
    try{
            fos = openFileOutput("answers.txt", MODE_PRIVATE);
            fos.write(x.getBytes());

        } catch (IOException e) {
            e.printStackTrace();
        }    

    try {
           fos.close();
         } catch (IOException e) {
            e.printStackTrace();
    }

エミュレーターでは、「data/data/com.example.helloandroid/files/answers.txt」で DDMS のファイルを見つけることができます。電話で DDMS のデータ フォルダを開こうとすると、空のディレクトリであることが示されます。私はすでにこの行をマニフェストに追加しています:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

私が間違っている可能性があることは他に考えられないようです。助けてくれてありがとう、それは感謝しています。

4

2 に答える 2

0

すべてがあなたのコードで正しいです。あなたの電話でファイルを見ることができない唯一の理由は: あなたの電話はルートではありません! 電話をルート化してから、RootExplorer (または他のアプリ) を使用して、エミュレーターと同じディレクトリに結果を表示します。これに加えて、なぜテキストを印刷しないのですか? ファイルが fos.close() の後に確実に作成されるようにするには、bufferReader を追加し、データを文字列に入れてから印刷してみてください! その後、LogCat で結果を確認できます

于 2012-10-31T03:17:31.613 に答える
0

あなたのコードは問題ありませんが、他の人が言っているように、Eclipse の DDMS は /data/data が存在する内部ストレージに適切にアクセスできません。http://developer.android.com/guide/topics/data/data-storage.htmlで、さまざまなタイプの Android ストレージへの参照を見つけることができます。

アクセスする方法の 1 つは、デバイスをルート化することです。

もう 1 つの方法は、userdebug ビルドをインストールすることです。

ただし、最も簡単な方法は、 adbrun-asの文書化されていないオプションを使用することです。これにより、内部ストレージにある場合でも、アプリが所有するファイルにアクセスできます。

目的のファイルが作成されていることを確認するには、コマンド ラインで次のように入力します。

adb shell run-as com.example.helloandroid ls -l /data/data/com.example.helloandroid/files/

特定のファイルの内容を取得するには、コマンド ラインでも次のように入力します。

adb shell run-as com.example.helloandroid cat /data/data/com.example.helloandroid/files/answers.txt
于 2012-10-31T04:47:38.893 に答える