Before anyone marks this as a duplicate I would like to let you know that I have gone through a lot of the questions about the mkdirs()
method on SO and none have worked for me so I believe I have a special case for this problem worthy of a question.
I have tried using mkdir()
, changed the instantiation of the directory File
as
new File(Environment.getExternalStorageDirectory())
new File(Environment.getExternalStorageDirectory().getAbsolutePath())
new File(Environment.getExternalStorageDirectory(), "Directory")
new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "Directory")
new File(Environment.getExternalStorageDirectory().toString + "/Directory")
and nothing works.
NOTE : I ALSO HAVE THE WRITE_EXTERNAL_STORAGE
permission in my manifest.
Here is my code snippet:
File rootDirectory = new File(Environment.getExternalStorageDirectory(), getActivity().getPackageName());
File directory = new File(rootDirectory, "Directory");
if (!directory.exists()) {
if(directory.mkdirs()){
Log.d("log", "exists");
} else {
Log.d("log", "not exists");
}
}
mkdirs create the complete folder tree, mkdir only the last folder in complete folder tree path
use a code like this:
String foldername = "HelloWorld";
File dir = new File(Environment.getExternalStorageDirectory() + "/" + foldername);
if (dir.exists() && dir.isDirectory()) {
Log.d("log", "exists");
} else {
//noinspection ResultOfMethodCallIgnored
dir.mkdir();
Log.d("log", "created");
}
use this
File rootDirectory = new File(Environment.getExternalStorageDirectory(),
new File(Environment.DIRECTORY_DOCUMENTS, getActivity().getPackageName()));
// if you target below api 19 use this => DIRECTORY_DOWNLOADS
// now your old code follows life is good
File directory = new File(rootDirectory, "Directory");
if (!directory.exists()) {
if(directory.mkdirs()){
Log.d("log", "exists");
} else {
Log.d("log", "not exists");
}
}
from your comment
But I don't want the users to be able to see the files I am going to save into the folder
you could use internal memory and call this [getDir(java.lang.String, int)](http://developer.android.com/reference/android/content/Context.html#getDir(java.lang.String, int))
let me know if it helps sir
来源:https://stackoverflow.com/questions/32001235/why-is-the-mkdirs-method-not-working