11

電話のメモリに何かを書き込もうとしています。

最初に、パスを次のようにハードコーディングしました。

myFile = new File("/sdcard/" + txtName.getText() + ".txt");

これは完全に正常に動作します。

そして、Eclipseは、代わりにそのようなパスをハードコードするべきではないという警告を表示します。次のことを行う必要があります。

myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ txtName.getText() + ".txt");

次に、修正の提案に従い、警告を回避します。

しかし、ライター クラスで実行時例外が発生しました。

次に、Environment.getExternalStorageDirectory().getAbsolutePath()デバッグ用に出力します。結果は

/ストレージ/sdcard0

. しかし、以前は完全に正常に機能していたハードコーディングされたものは、実際には

/SDカード

.

なぜこれが起こるのでしょうか?

また、警告を回避したい場合は、パスをハードコーディングするのではなく、より「正式で正しい」方法でパス ディレクトリを取得するにはどうすればよいですか?

PS: 私の電話は HTC One X で、外部 SD カード スロットはありません。32GBのストレージにSDカードが内蔵されているのでしょうから、本質は同じはずです。

4

2 に答える 2

0

.getAbsolutePath() を削除すると問題ありません。Environment.getExternalStoreDirectory() は、メーカーが外部ストレージを設定した場所へのパスを提供します。

于 2015-05-05T14:19:51.943 に答える