Difference between mkdir() and mkdirs() in java for java.io.File
JavaAndroidDirectoryAndroid FileJava Problem Overview
Can anyone tell me the difference between these two methods:
file.mkdir()
file.mkdirs()
Java Solutions
Solution 1 - Java
mkdirs()
also creates parent directories in the path this File
represents.
[javadocs][1] for mkdirs()
:
> Creates the directory named by this abstract pathname, including any > necessary but nonexistent parent directories. Note that if this > operation fails it may have succeeded in creating some of the > necessary parent directories.
[javadocs][2] for mkdir()
:
> Creates the directory named by this abstract pathname.
Example:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
will yield false
for the first [and no dir will be created], and true
for the second, and you will have created non_existing_dir/someDir
[1]: http://docs.oracle.com/javase/6/docs/api/java/io/File.html#mkdirs%28%29
[2]: http://docs.oracle.com/javase/6/docs/api/java/io/File.html#mkdir%28%29
Solution 2 - Java
mkdirs()
will create the specified directory path in its entirety where mkdir()
will only create the bottom most directory, failing if it can't find the parent directory of the directory it is trying to create.
In other words mkdir()
is like mkdir
and mkdirs()
is like mkdir -p
.
For example, imagine we have an empty /tmp
directory. The following code
new File("/tmp/one/two/three").mkdirs();
would create the following directories:
/tmp/one
/tmp/one/two
/tmp/one/two/three
Where this code:
new File("/tmp/one/two/three").mkdir();
would not create any directories - as it wouldn't find /tmp/one/two
- and would return false
.
Solution 3 - Java
mkdir()
creates only one directory at a time, if it is parent that one only. other wise it can create the sub directory(if the specified path is existed only) and do not create any directories in between any two directories. so it can not create smultiple directories in one directory
mkdirs()
create the multiple directories(in between two directories also) at a time.