2

SD カードのアプリ フォルダーにファイルが存在するかどうかを確認しようとしています。最初にフォルダーの存在を確認し、それをうまく処理します。次に、ファイルが存在するかどうかを確認したいので、次のことを試しましたが、「パス区切り文字が含まれています」というメッセージが表示されました

File file = getBaseContext().getFileStreamPath(ChildFolder + "/LiftData.xml");

ChildFolder は正しいパスです。以前に設定しましたが、デバッグ パースペクティブで正しく表示できます。ファイル名だけを使用すると、ファイルが表示されず、毎回作成されます。

File file = getBaseContext().getFileStreamPath("LiftData.xml");

これは、パス情報がないとルートでファイルを探しているためだと思われます。基本コンテキストを設定できますが、それは機能しますか?それは適切な/良い習慣ですか?

Google に助けを求めても良い例が見つからないので、この Java 初心者を助けるためにもう一度お手数をおかけして申し訳ありません。

JB

4

1 に答える 1

0

いくつかのポイント:

  • 外部ストレージ上のアプリケーションのフォルダーを取得するには、 を呼び出しますContext.getExternalFilesDir

  • 「/」を使用する代わりに、定数を使用しますFile.separator(または、Fileコンストラクターを使用して絶対パスを組み立てます。File(basePath, "LiftData.xml")

  • でファイルの存在をテストしますFile.exists

  • アプリが外部ストレージにアクセスするには明示的な許可が必要であり、それが利用可能かどうかをEnvironment.getExternalStorageState

于 2012-04-19T12:07:28.473 に答える