2012-04-19 10 views
2

ファイルがsdcardの自分のアプリケーションフォルダに存在するかどうかを調べようとしています。私はフォルダの存在を最初にチェックし、それをうまく処理します。ファイルには、私は次のよう試みたが、getFileStreamPathを使用してファイルが存在するかどうかを調べる - sorta working

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

ChildFolderが正しいパスである「パスの区切り文字が含まれています」だそう存在する場合、次の私が見てみたいです。以前に設定したので、デバッグの観点から正しく見ることができます。ファイル名だけを使用すると、ファイルが表示されず、毎回作成されます。

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

これは、ルート情報がなくてもルート内のファイルを探しているからです。私は基本的なコンテキストを設定することができますが、それは動作し、それは適切な/良い練習ですか?

私はGoogleに助けを頼むと良い例は見つからないので、このJavaの問題を解決するためにもう一度迷惑をおかけしてお詫び申し上げます。

JB

+1

ファイルコンストラクタを使用します。コンテキストをインスタンス化する必要はありません。File file = new File(ChildFolder、 "LiftData.xml"); – Blackbelt

+0

十分に良い。いつどのような状況で文脈を使うのですか?このような状況の場合は – GPGVM

+0

:http://developer.android.com/reference/android/content/Context.html#getCacheDir%28%29、IMO – Blackbelt

答えて

0

ポイントのカップル:

  • 外部記憶装置上のアプリケーションのフォルダを取得するには、Context.getExternalFilesDirを呼び出します。代わりに "/" を使用しての

  • 、絶対パスを組み立てるためにFileコンストラクタを使用して、いっそ、定数File.separatorを使用(または:File.exists

  • キープとファイルexistanceためFile(basePath, "LiftData.xml")

  • テストアプリが外部ストレージにアクセスするための明示的なアクセス許可が必要であり、利用可能かどうかを確認する必要があることを覚えておいてください。

関連する問題