catch (IOException _)
catch (IOException ignored)
  public static File createTempFile (String prefix, String suffix,				     File directory)    throws IOException  {    // Grab the system temp directory if necessary    if (directory == null)      {	String dirname = tmpdir;	if (dirname == null)	  throw 	    new IOException("Cannot determine system temporary directory"); 		directory = new File(dirname);	if (!directory.exists())	  throw new IOException("System temporary directory " 				+ directory.getName() + " does not exist.");	if (!directory.isDirectory())	  throw new IOException("System temporary directory " 				+ directory.getName() 				+ " is not really a directory.");      }    if (prefix.length () < 3)      throw new IllegalArgumentException ("Prefix too short: " + prefix);    if (suffix == null)      suffix = ".tmp";    // FIXME: filename length varies by architecture and filesystem.    int max_length = 255;    // Truncation rules.    // `6' is the number of characters we generate.    if (prefix.length () + 6 + suffix.length () > max_length)      {	int suf_len = 0;	if (suffix.charAt(0) == '.')	  suf_len = 4;	suffix = suffix.substring(0, suf_len);	if (prefix.length () + 6 + suf_len > max_length)	  prefix = prefix.substring(0, max_length - 6 - suf_len);      }    File f;    // How many times should we try?  We choose 100.    for (int i = 0; i < 100; ++i)      {	// This is ugly.	String t = "ZZZZZZ" + nextValue ();	String l = prefix + t.substring(t.length() - 6) + suffix;	try	  {	    f = new File(directory, l);	    if (f.exists())	      continue;	    else	      {		String af = f.getAbsolutePath ();				// Check to see if we're allowed to write to it.		SecurityManager s = System.getSecurityManager();		if (s != null)		  s.checkWrite (af);				// Now create the file.		FileDescriptor fd = 		  new FileDescriptor (af, 				      FileDescriptor.WRITE				      | FileDescriptor.EXCL);		fd.close ();		return f;	      }	  }	catch (IOException _)	  {	  }      }    throw new IOException ("cannot create temporary file");  }