Duplicate :
|
|
Relates :
|
Apparently java.io.File.mkdirs has a race condition that causes it to fail if a parent directory is created by a different thread. if (mkdir()) { return true; } // step one File canonFile = null; try { canonFile = getCanonicalFile(); } catch (IOException e) { return false; } String parent = canonFile.getParent(); return (parent != null) && (new File(parent, fs.prefixLength(parent)).mkdirs() && // step two canonFile.mkdir()); If the parent file is created between step one and step two, the method will fail to create the child.