I would put this on the failure path:

  if (!d.mkdir()) {
    if (skipExisting && d.isDirectory())
      return;

    throw new IOException(...);
  }

Because odds are the caller wants to make a new directory and we can reasonably assume it doesn't exist yet.  If it does, we'll fail on the mkdir and check its mode, if its a directory, we're fine, if its not, we fail.