desc.open (l, FileDescriptor.WRITE | FileDescriptor.EXCL);
desc = new FileDescriptor (l, FileDescriptor.WRITE | FileDescriptor.EXCL); desc.close ();
  public static File createTempFile (String prefix, String suffix,				     File directory)    throws IOException  {    FileDescriptor desc = new FileDescriptor ();    SecurityManager s = System.getSecurityManager();    if (s != null)      s.checkWrite (desc);    if (prefix.length () < 3)      throw new IllegalArgumentException ();    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);      }    // We don't care about the name because we set it later.    File ret = new File ("");    // 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	  {	    desc.open (l, FileDescriptor.WRITE | FileDescriptor.EXCL);	    ret.setPath(l);	    return ret;	  }	catch (IOException _)	  {	  }      }    throw new IOException ("couldn't make temp file");  }