📄 file.java
字号:
public long length () { checkRead(); return attr (LENGTH); } private final native Object[] performList (FilenameFilter filter, FileFilter fileFilter, Class result_type); public String[] list (FilenameFilter filter) { checkRead(); return (String[]) performList (filter, null, String.class); } public String[] list () { checkRead(); return (String[]) performList (null, null, String.class); } /** @since 1.2 */ public File[] listFiles() { checkRead(); return (File[]) performList (null, null, File.class); } /** @since 1.2 */ public File[] listFiles(FilenameFilter filter) { checkRead(); return (File[]) performList (filter, null, File.class); } /** @since 1.2 */ public File[] listFiles(FileFilter filter) { checkRead(); return (File[]) performList (null, filter, File.class); } public String toString () { return path; } public URL toURL () throws MalformedURLException { // On Win32, Sun's JDK returns URLs of the form "file:/c:/foo/bar.txt", // while on UNIX, it returns URLs of the form "file:/foo/bar.txt". if (separatorChar == '\\') return new URL ("file:/" + getAbsolutePath ().replace ('\\', '/') + (isDirectory() ? "/" : "")); else return new URL ("file:" + getAbsolutePath () + (isDirectory() ? "/" : "")); } private final native boolean performMkdir (); public boolean mkdir () { checkWrite(); return performMkdir (); } private static boolean mkdirs (File x) { if (x.isDirectory()) return true; String p = x.getPath(); String parent = x.getParent(); if (parent != null) { x.path = parent; if (! mkdirs (x)) return false; x.path = p; } return x.mkdir(); } public boolean mkdirs () { checkWrite(); if (isDirectory ()) return false; return mkdirs (new File (path)); } private static synchronized String nextValue () { return Long.toString(counter++, Character.MAX_RADIX); } /** @since 1.2 */ 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"; // Truncation rules. // `6' is the number of characters we generate. if (prefix.length () + 6 + suffix.length () > maxPathLen) { int suf_len = 0; if (suffix.charAt(0) == '.') suf_len = 4; suffix = suffix.substring(0, suf_len); if (prefix.length () + 6 + suf_len > maxPathLen) prefix = prefix.substring(0, maxPathLen - 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.createNewFile()) return f; } catch (IOException ignored) { } } throw new IOException ("cannot create temporary file"); } private native boolean performSetReadOnly(); /** @since 1.2 */ public boolean setReadOnly() { checkWrite(); return performSetReadOnly(); } private static native File[] performListRoots(); /** @since 1.2 */ public static File[] listRoots() { File[] roots = performListRoots(); SecurityManager s = System.getSecurityManager(); if (s != null) { // Only return roots to which the security manager permits read access. int count = roots.length; for (int i = 0; i < roots.length; i++) { try { s.checkRead(roots[i].path); } catch (SecurityException sx) { roots[i] = null; count--; } } if (count != roots.length) { File[] newRoots = new File[count]; int k = 0; for (int i=0; i < roots.length; i++) { if (roots[i] != null) newRoots[k++] = roots[i]; } roots = newRoots; } } return roots; } public static File createTempFile (String prefix, String suffix) throws IOException { return createTempFile (prefix, suffix, null); } /** @since 1.2 */ public int compareTo(File other) { if (caseSensitive) return path.compareTo (other.path); else return path.compareToIgnoreCase (other.path); } /** @since 1.2 */ public int compareTo(Object o) { File other = (File) o; return compareTo (other); } private native boolean performRenameTo (File dest); public boolean renameTo (File dest) { SecurityManager s = System.getSecurityManager(); String sname = getName(); String dname = dest.getName(); if (s != null) { s.checkWrite(sname); s.checkWrite(dname); } return performRenameTo (dest); } private native boolean performSetLastModified(long time); /** @since 1.2 */ public boolean setLastModified(long time) { checkWrite(); return performSetLastModified(time); } public static final String pathSeparator = System.getProperty("path.separator"); public static final char pathSeparatorChar = pathSeparator.charAt(0); public static final String separator = System.getProperty("file.separator"); public static final char separatorChar = separator.charAt(0); static final String tmpdir = System.getProperty("java.io.tmpdir"); static int maxPathLen; static boolean caseSensitive; static String dupSeparator = separator + separator; static { init_native(); } // Native function called at class initialization. This should should // set the maxPathLen and caseSensitive variables. private static native void init_native(); // The path. private String path; // We keep a counter for use by createTempFile. We choose the first // value randomly to try to avoid clashes with other VMs. private static long counter = Double.doubleToLongBits (Math.random ()); private void checkWrite () { SecurityManager s = System.getSecurityManager(); if (s != null) s.checkWrite(path); } private void checkRead () { SecurityManager s = System.getSecurityManager(); if (s != null) s.checkRead(path); } /** * Add this File to the set of files to be deleted upon normal * termination. * * @since 1.2 */ // FIXME: This should use the ShutdownHook API once we implement that. public void deleteOnExit () { SecurityManager sm = System.getSecurityManager (); if (sm != null) sm.checkDelete (getName ()); FileDeleter.add (this); } private void writeObject (ObjectOutputStream oos) throws IOException { oos.defaultWriteObject (); oos.writeChar (separatorChar); } private void readObject (ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject (); // If the file was from an OS with a different dir separator, // fixup the path to use the separator on this OS. char oldSeparatorChar = ois.readChar (); if (oldSeparatorChar != separatorChar) path = path.replace (oldSeparatorChar, separatorChar); } // QUERY arguments to access function. private final static int READ = 0; private final static int WRITE = 1; private final static int EXISTS = 2; // QUERY arguments to stat function. private final static int DIRECTORY = 0; private final static int ISFILE = 1; private final static int ISHIDDEN = 2; // QUERY arguments to attr function. private final static int MODIFIED = 0; private final static int LENGTH = 1; private final native long attr (int query); // On OSF1 V5.0, `stat' is a macro. It is easiest to use the name // `_stat' instead. We do the same thing for `_access' just in // case. private final native boolean _access (int query); private final native boolean _stat (int query); private static final long serialVersionUID = 301077366599181567L;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -