以下是类File的原文件!
文件夹的操作和文件应该是一样的!
有些属性只能设置,而不能去掉!
象只能设置setReadOnly(),而不能去掉!
// Source File Name:   File.javapackage java.io;import java.net.MalformedURLException;
import java.net.URL;
import java.security.AccessControlException;
import java.security.AccessController;
import java.util.ArrayList;
import java.util.Random;
import sun.security.action.GetPropertyAction;// Referenced classes of package java.io:
//            Serializable, IOException, FileSystem, FilenameFilter, 
//            FileFilter, ObjectOutputStream, ObjectInputStreampublic class File
    implements Serializable, Comparable
{    int getPrefixLength()
    {
        return prefixLength;
    }    private File(String s, int i)
    {
        path = s;
        prefixLength = i;
    }    public File(String s)
    {
        if(s == null)
        {
            throw new NullPointerException();
        } else
        {
            path = fs.normalize(s);
            prefixLength = fs.prefixLength(path);
            return;
        }
    }    public File(String s, String s1)
    {
        if(s1 == null)
            throw new NullPointerException();
        if(s != null)
        {
            if(s.equals(""))
                path = fs.resolve(fs.getDefaultParent(), fs.normalize(s1));
            else
                path = fs.resolve(fs.normalize(s), fs.normalize(s1));
        } else
        {
            path = fs.normalize(s1);
        }
        prefixLength = fs.prefixLength(path);
    }    public File(File file, String s)
    {
        if(s == null)
            throw new NullPointerException();
        if(file != null)
        {
            if(file.path.equals(""))
                path = fs.resolve(fs.getDefaultParent(), fs.normalize(s));
            else
                path = fs.resolve(file.path, fs.normalize(s));
        } else
        {
            path = fs.normalize(s);
        }
        prefixLength = fs.prefixLength(path);
    }    public String getName()
    {
        int i = path.lastIndexOf(separatorChar);
        if(i < prefixLength)
            return path.substring(prefixLength);
        else
            return path.substring(i + 1);
    }    public String getParent()
    {
        int i = path.lastIndexOf(separatorChar);
        if(i < prefixLength)
        {
            if(prefixLength > 0 && path.length() > prefixLength)
                return path.substring(0, prefixLength);
            else
                return null;
        } else
        {
            return path.substring(0, i);
        }
    }

解决方案 »

  1.   

    public File getParentFile()
        {
            String s = getParent();
            if(s == null)
                return null;
            else
                return new File(s, prefixLength);
        }    public String getPath()
        {
            return path;
        }    public boolean isAbsolute()
        {
            return fs.isAbsolute(this);
        }    public String getAbsolutePath()
        {
            return fs.resolve(this);
        }    public File getAbsoluteFile()
        {
            return new File(getAbsolutePath());
        }    public String getCanonicalPath()
            throws IOException
        {
            return fs.canonicalize(fs.resolve(this));
        }    public File getCanonicalFile()
            throws IOException
        {
            return new File(getCanonicalPath());
        }    public URL toURL()
            throws MalformedURLException
        {
            String s = getAbsolutePath();
            if(separatorChar != '/')
                s = s.replace(separatorChar, '/');
            if(!s.startsWith("/"))
                s = "/" + s;
            if(!s.endsWith("/") && isDirectory())
                s = s + "/";
            return new URL("file", "", s);
        }    public boolean canRead()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return fs.checkAccess(this, false);
        }    public boolean canWrite()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkWrite(path);
            return fs.checkAccess(this, true);
        }    public boolean exists()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return (fs.getBooleanAttributes(this) & 0x1) != 0;
        }    public boolean isDirectory()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return (fs.getBooleanAttributes(this) & 0x4) != 0;
        }    public boolean isFile()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return (fs.getBooleanAttributes(this) & 0x2) != 0;
        }    public boolean isHidden()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return (fs.getBooleanAttributes(this) & 0x8) != 0;
        }    public long lastModified()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return fs.getLastModifiedTime(this);
        }    public long length()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return fs.getLength(this);
        }    public boolean createNewFile()
            throws IOException
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkWrite(path);
            return fs.createFileExclusively(path);
        }    public boolean delete()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkDelete(path);
            return fs.delete(this);
        }    public void deleteOnExit()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkDelete(path);
            fs.deleteOnExit(this);
        }    public String[] list()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkRead(path);
            return fs.list(this);
        }    public String[] list(FilenameFilter filenamefilter)
        {
            String as[] = list();
            if(as == null || filenamefilter == null)
                return as;
            ArrayList arraylist = new ArrayList();
            for(int i = 0; i < as.length; i++)
                if(filenamefilter.accept(this, as[i]))
                    arraylist.add(as[i]);        return (String[])arraylist.toArray(new String[0]);
        }    public File[] listFiles()
        {
            String as[] = list();
            if(as == null)
                return null;
            int i = as.length;
            File afile[] = new File[i];
            for(int j = 0; j < i; j++)
                afile[j] = new File(path, as[j]);        return afile;
        }    public File[] listFiles(FilenameFilter filenamefilter)
        {
            String as[] = list();
            if(as == null)
                return null;
            ArrayList arraylist = new ArrayList();
            for(int i = 0; i < as.length; i++)
                if(filenamefilter == null || filenamefilter.accept(this, as[i]))
                    arraylist.add(new File(path, as[i]));        return (File[])arraylist.toArray(new File[0]);
        }    public File[] listFiles(FileFilter filefilter)
        {
            String as[] = list();
            if(as == null)
                return null;
            ArrayList arraylist = new ArrayList();
            for(int i = 0; i < as.length; i++)
            {
                File file = new File(path, as[i]);
                if(filefilter == null || filefilter.accept(file))
                    arraylist.add(file);
            }        return (File[])arraylist.toArray(new File[0]);
        }
      

  2.   

    public boolean mkdir()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkWrite(path);
            return fs.createDirectory(this);
        }    public boolean mkdirs()
        {
            if(exists())
                return false;
            if(mkdir())
            {
                return true;
            } else
            {
                String s = getParent();
                return s != null && (new File(s)).mkdirs() && mkdir();
            }
        }    public boolean renameTo(File file)
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
            {
                securitymanager.checkWrite(path);
                securitymanager.checkWrite(file.path);
            }
            return fs.rename(this, file);
        }    public boolean setLastModified(long l)
        {
            if(l < 0L)
                throw new IllegalArgumentException("Negative time");
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkWrite(path);
            return fs.setLastModifiedTime(this, l);
        }    public boolean setReadOnly()
        {
            SecurityManager securitymanager = System.getSecurityManager();
            if(securitymanager != null)
                securitymanager.checkWrite(path);
            return fs.setReadOnly(this);
        }    public static File[] listRoots()
        {
            return fs.listRoots();
        }    private static File generateFile(String s, String s1, File file)
            throws IOException
        {
            if(counter == -1)
                counter = (new Random()).nextInt() & 0xffff;
            counter++;
            return new File(file, s + Integer.toString(counter) + s1);
        }    private static String getTempDir()
        {
            if(tmpdir == null)
            {
                GetPropertyAction getpropertyaction = new GetPropertyAction("java.io.tmpdir");
                tmpdir = (String)AccessController.doPrivileged(getpropertyaction);
            }
            return tmpdir;
        }    private static boolean checkAndCreate(String s, SecurityManager securitymanager)
            throws IOException
        {
            if(securitymanager != null)
                try
                {
                    securitymanager.checkWrite(s);
                }
                catch(AccessControlException accesscontrolexception)
                {
                    throw new SecurityException("Unable to create temporary file");
                }
            return fs.createFileExclusively(s);
        }    public static File createTempFile(String s, String s1, File file)
            throws IOException
        {
            if(s == null)
                throw new NullPointerException();
            if(s.length() < 3)
                throw new IllegalArgumentException("Prefix string too short");
            String s2 = s1 != null ? s1 : ".tmp";
            File file2;
            synchronized(tmpFileLock)
            {
                if(file == null)
                    file = new File(getTempDir());
                SecurityManager securitymanager = System.getSecurityManager();
                File file1;
                do
                    file1 = generateFile(s, s2, file);
                while(!checkAndCreate(file1.getPath(), securitymanager));
                file2 = file1;
            }
            return file2;
        }    public static File createTempFile(String s, String s1)
            throws IOException
        {
            return createTempFile(s, s1, null);
        }    public int compareTo(File file)
        {
            return fs.compare(this, file);
        }    public int compareTo(Object obj)
        {
            return compareTo((File)obj);
        }    public boolean equals(Object obj)
        {
            if(obj != null && (obj instanceof File))
                return compareTo((File)obj) == 0;
            else
                return false;
        }    public int hashCode()
        {
            return fs.hashCode(this);
        }    public String toString()
        {
            return getPath();
        }    private synchronized void writeObject(ObjectOutputStream objectoutputstream)
            throws IOException
        {
            objectoutputstream.defaultWriteObject();
            objectoutputstream.writeChar(separatorChar);
        }    private synchronized void readObject(ObjectInputStream objectinputstream)
            throws IOException, ClassNotFoundException
        {
            objectinputstream.defaultReadObject();
            char c = objectinputstream.readChar();
            if(c != separatorChar)
                path = path.replace(c, separatorChar);
            path = fs.normalize(path);
            prefixLength = fs.prefixLength(path);
        }    private static FileSystem fs;
        private String path;
        private transient int prefixLength;
        public static final char separatorChar;
        public static final String separator;
        public static final char pathSeparatorChar;
        public static final String pathSeparator;
        private static final Object tmpFileLock = new Object();
        private static int counter = -1;
        private static String tmpdir;
        private static final long serialVersionUID = 0x42da4450e0de4ffL;    static 
        {
            fs = FileSystem.getFileSystem();
            separatorChar = fs.getSeparator();
            separator = "" + separatorChar;
            pathSeparatorChar = fs.getPathSeparator();
            pathSeparator = "" + pathSeparatorChar;
        }
    }
    以上的内容接在一起!