1

この問題についてしばらく調査しましたが、非常に複雑な答えしか見つけられなかったので、非常に混乱しています。私はプロのプログラマーではないので、これについて多くのことを知っているとは思わないでください。

私がしたいのは、Android の SD カードのダウンロード フォルダーにあるテキスト ファイルに新しい行の文字を出力することだけです。SD カードを使用するようにエミュレーターをセットアップし、テキスト ファイルをダウンロード フォルダーに配置しました。このコードは、SD カード内のテキスト ファイルにアクセスしてデータを読み取るデータベース クラス用です。クラスが Android の外部で動作することはわかっているので、データを読み取るためにすべてのメソッドが正常に動作していると仮定します。

このメソッドを別のクラスで実行すると、IOException が発生します。

public void addRecordToDataBase(ChildRecord c) throws IOException
{
    FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt");
    PrintWriter out = new PrintWriter(outFile);
    out.println(c.printToDataBase());
    out.close();
}

奇妙なことに、同じパスを使用する他の方法でデータベースから問題なく読み取ることができます。問題ありません。私はそれに書くことができません。「通常の Java メソッド」を使用して Android の SD カードに書き込むことができるとどこかで読んだことがあります。これは本当ですか?このことをデバッグしたところ、例外をスローしているコード行がここにあることがわかりました。

FileWriter outFile = new FileWriter("/mnt/sdcard/download/database.txt");

この IOException が発生する理由を誰かが知っている場合は、本当に感謝しています! 私はAndroidが使いたがっているクレイジーな方法をすべて試しましたが、私はそれで道に迷ったと思うので、やり方を知っていた方法に戻っただけです.

どうもありがとう!

4

2 に答える 2

1

私の推測では、少なくともその方法では、書き込み権限でそのようなディレクトリにアクセスすることはできません。

http://developer.android.com/guide/topics/data/data-storage.html#filesExternalをご覧になりましたか?

そのリファレンスとこれ ( http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String) ) は、getExternalFilesDir がどのように機能するかを説明しています。

于 2011-11-25T18:52:24.613 に答える
1

アプリのマニフェスト ファイルでWRITE_EXTERNAL_PERMISSIONパーミッションを宣言しましたか?

于 2011-11-25T19:11:23.167 に答える