Working with files in Java often uses the Java.io.File.mkdir () and Java.io.File.mkdirs () two methods to create a directory (folder), which is very similar, with no parameters and the return value is Boolean-type , which are used to create a directory for the specified path name, the main differences are as follows:
Java.io.File.mkdir (): Only one level directory can be created, and the parent directory must exist, otherwise a directory cannot be created successfully.
Java.io.File.mkdirs (): You can create multilevel directories, and the parent directory does not necessarily exist.
Here is a routine that can profoundly appreciate the difference between the two:
<span style = "font-size: 18px;"> import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
/ **
* mkdir and mkdirs test routines
* Time: 2016-5-15 22:34
* Description: 1. java.io.File.mkdir () and java.io.File.mkdirs () are used to create the directory corresponding to the specified path name.
* But java.io.File.mkdir () can only create a first-level directory and the parent directory must exist, otherwise a directory will not be created correctly;
* java.io.File.mkdir () can create multi-level directories, the parent directory does not necessarily exist.
* * /
public class mkdirsAndmkdirTestMain {
private static final String path1 = "path1";
private static final String path2 = "path2 / path2 /";
private static final String path3 = "path3";
private static final String path4 = "path4 / path4 /";
private static final String filePath1 = "file1.txt";
/ **
* @param args
* /
public static void main (String [] args) {
The
File file1 = new File (path1);
if (! file1.exists ()) {
file1.mkdir ();
}
System.out.println (file1.getPath ());
The
File file2 = new File (path2);
if (! file2.exists ()) {
file2.mkdir ();
}
System.out.println (file2.getPath ());
The
File file3 = new File (path3);
if (! file3.exists ()) {
file3.mkdirs ();
}
System.out.println (file3.getPath ());
File file4 = new File (path4);
if (! file4.exists ()) {
file4.mkdirs ();
}
System.out.println (file4.getPath ());
The
File file4_1 = new File (path4 + filePath1);
if (! file4_1.exists ()) {
try {
file4_1.createNewFile ();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace ();
}
}
System.out.println (file4_1.getPath ());
The
try {
PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter (file4_1)));
long current = System.currentTimeMillis ();
String time = new SimpleDateFormat ("yyyy-MM-dd HH: mm: ss"). Format (new Date (current));
pw.write ("Time:" + time);
pw.println ();
pw.println ("Absolute path of current file:" + file4_1.getAbsolutePath ());
pw.write ("Relative path of current file:" + file4_1.getPath ());
pw.close ();
The
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace ();
}
The
}
}
</ span>
Path1 is a first-level path, using Java.io.File.mkdir () to successfully create the corresponding directory;
And Path2 is a two-level path, using Java.io.File.mkdir () does not create the corresponding directory;
Path3 is a first-level path, Path4 is a two-level path, each using Java.io.File.mkdirs () can successfully create their respective directories.
Test example Routines Code (github)