The difference is hidden under the "s" which is missing in the first method. In fact, mkdir() will create only demanded directory. If some of parent directories doesn't exist, this method will return false. mkdirs() will create the last directory with all missing parent directories. Take a look on following example:
public class MakingDirTest {
@Test
public void test() {
String tmpBaseDir = "/home/bartosz/";
String directoryOk = tmpBaseDir+"new-directory";
String parent = "test-parent/";
String dir = "test";
// delete directories if exist
new File(directoryOk).delete();
new File(tmpBaseDir+parent+dir).delete();
new File(tmpBaseDir+parent).delete();
boolean okMade = new File(directoryOk).mkdir(); // true
boolean nokMade = new File(tmpBaseDir+parent+dir).mkdir(); // false
boolean okParentMade = new File(tmpBaseDir+parent+dir).mkdirs(); // true
assertTrue(directoryOk + " shouldn't be made", okMade);
assertFalse(tmpBaseDir+parent+dir+ " shouldn't be made with mkdir method", nokMade);
assertTrue(tmpBaseDir+parent+dir + " should be made with mkdirs method", okParentMade);
}
}