2016-09-03 14 views
3

携帯電話のSDカードのフォルダから\weights\inputというパスを読み取ろうとしています。 AndroidのEnvironment.getExternalStorageDirectory().toString()/storage/emulated/0を返し、そのパスのisDirectory()がtrueを返します。私は次のコードを実行するときしかし:getExternalStorageDirectoryは、SDカードではなく、自分の携帯電話のルートストレージを返すのはなぜですか?

File weights = Environment.getExternalStorageDirectory(); 
List<File> inputs = getListFiles(weights); 

リストinputsは自分の携帯電話の内部ストレージ上のすべてのファイルではなく、SDカードを、含まれているが、私はinputs内のディレクトリを探したときにそう、私のアプリは失敗します。

これはなぜですか?ところで、私は完全にAndroidとJavaの初心者です。完全に。

+2

は '/ウェイト/入力/'ちょうど時間前 – Kaushal28

+1

を追加してみ私は同じ問題を抱えていたし、ランダム/ ''追加し、それが働いたを試してみました! – Kaushal28

+0

ディレクトリにいくつのファイルがあるかを教えてください。 –

答えて

5

私は同様の問題があり、最後に/を追加しようとしました。

/weights/input/ 

代わり

/weights/input 

EDITの:あなたは、次の試みることができる 編集した後、私はこれを見つけた:

getExternalStorageDirectoryは外部記憶装置」として設定されているものは何でも返すように実装されていますデバイス環境の場合:

public static File getExternalStorageDirectory() { 
    return EXTERNAL_STORAGE_DIRECTORY; 
} 

EXTERNAL_STORAGE_DIRECTORYは:

DIRECTORY_MUSIC、DIRECTORY_PODCASTS、DIRECTORY_RINGTONES、DIRECTORY_ALARMS、DIRECTORY_NOTIFICATIONS、DIRECTORY_PICTURES、DIRECTORY_MOVIES、DIRECTORY_DOWNLOADS、又はDIRECTORY_DCIM:対照的に

private static final File EXTERNAL_STORAGE_DIRECTORY = getDirectory("EXTERNAL_STORAGE", "/sdcard"); 

static File getDirectory(String variableName, String defaultPath) { 
    String path = System.getenv(variableName); 
    return path == null ? new File(defaultPath) : new File(path); 
} 

getExternalStoragePublicDirectory(String type)は、これらの文字列のいずれかを必要とします。 nullでないことがあります。

ですので、sdカードのルートを返すようにはなっていません。

代替:

最後に、getExternalStorageState()/mnt/sdcard/にマウントされたファイルシステムを返します。この回答のCommonsWareによると、Find an external SD card locationは、外部のsdcardを直接取得する方法はありません(存在する場合でも)。

の場合は、isExternalStorageRemovable()をチェックし、手動オプションを指定することもできます。

出典:This link.

+0

申し訳ありませんが、間違いでした。最後に/が何とか剥ぎ取られ、 'isDirectory'はまだfalseを返します。 – ProfK

+0

しかし、これは私の場合は完全に正常に機能しました。私のプロジェクトで何をしたのか教えてあげてください。 – Kaushal28

+0

ねえ、menifestで権限を追加しましたか?あなたは外部ストレージを読む許可を与えなければなりません。これが偽りの理由です。 – Kaushal28

関連する問題