2016-05-23 15 views
1

私はファイルストレージシステムを稼働させようとしていて、フォルダ名は、現在の日付を表す文字列であるAndroid:mkdir()に失敗しました:ENOENT(そのようなファイルやディレクトリはありません)

static File dataFolder = Environment.getExternalStorageDirectory(); 

...

static File userDataFolder = new File(dataFolder, "triathlon"); 

...

File dayFolder = new File(userDataFolder, folderName); 
if(!dayFolder.exists()){ 
    boolean result = dayFolder.mkdir(); 
    if (!result){ 
     Log.d("dayFolder creation", "failed"); 
    } 
} 

:しかし、私は次のような問題が発生しました。

これはエラーメッセージです:

W/System.err: mkdir failed: ENOENT (No such file or directory) : /storage/emulated/0/triathlon/2016-05-23 

私が書くと、外部記憶装置から読み取るためのアクセス許可を追加しました。 Whatsがアップしていますが、これをどのように修正できますか?代わりに

boolean result = dayFolder.mkdir(); 

使用

boolean result = dayFolder.mkdirs(); 

.mkdirs()

+0

どのSDKをターゲットにしていますか?たぶんあなたはランタイムのアクセス許可が必要です(Lollipop以上) –

+0

それは有効な点です、私はSDK 23をターゲットにしていますので、Android 6.0。私はそれを確認します、ヒントのおかげで。 – FuriousFry

+0

うん、それは間違いだった。あなたのコメントを回答として書いてください。答えが表示されます。 – FuriousFry

答えて

6

は、すべての必要な親ディレクトリを作成します。

親ディレクトリが1つ以上存在しないため、mkdir()を使用してディレクトリを作成できないため、mkdirs()が必要です。

+0

これにより、エラーメッセージが表示されなくなりました。悲しいことに、それはまだfalseを返すので、ディレクトリを作成しませんでした。 – FuriousFry

+0

SDK 23以降を使用している場合は、まず実行時アクセス許可を確認する必要があります。https://developer.android.com/training/permissions/requesting.html – xdevs23

関連する問題