java语言中File类继承了Object接口类切实现了Serializable(序列化)接口类。
下面开始介绍File类的一些相关操作:
一、文件的创建:
File有四个构造函数:
1、public File(File parent,String child)
    根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。  如果 parent 为 null,则创建一个新的 File 实例,这与调用给定 child 路径名字符串的单参数 File 构造方法的效果一样。 否则,parent 抽象路径名用于表示目录,child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换为一个相对路径名。如果 parent 是空抽象路径名,则通过将 child 转换为抽象路径名,并根据与系统有关的默认目录解析结果来创建新的 File 实例。否则,将每个路径名字符串转换为一个抽象路径名,并根据父抽象路径名解析子抽象路径名。(举例说明)
    2、 public File(String pathname)
        通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,那么结果是空抽象路径名。
        参数:
            pathname - 路径名字符串
        抛出:
            NullPointerException - 如果 pathname 参数为 null
            这种实例化java中File类的方式比较的常见,应该熟练地掌握!
  3、  public File(String parent, String child)
                根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 如果 parent 为 null,则创建一个新的 File 实例,这与调用以给定 child 路径名字符串作为参数的单参数 File 构造方法效果一样否则,parent 路径名字符串用于表示目录,child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换为一个相对路径名。如果 parent 是空字符串,则通过将 child 转换为抽象路径名,并根据与系统有关的默认目录解析结果来创建新的 File 实例。否则,将每个路径名字符串转换为一个抽象路径名,并根据父抽象路径名解析子抽象路径名。
                参数:
                    parent - 父路径名字符串
                    child - 子路径名字符串
                抛出:

                    NullPointerException - 如果 child 为 null

   4、 public File(URI uri)

                    通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。file: URI 的具体形式与系统有关,因此,由此构造方法执行的转换也与系统有关。 对于某个给定抽象路径名 f,可以保证: new File( f.toURI()).equals( f.getAbsoluteFile()) 只要原始抽象路径名、URI 和新抽象路径名都是在同一 Java 虚拟机(或者它的不同调用)中创建的。但是,当在某一操作系统上的虚拟机中创建的 file: URI 在不同操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常是不成立的。


                    参数:


                        uri - 一个绝对分层 URI,由一个等于 "file" 的 scheme、非空的 path 组件,以及未定义的 authority、query 和 fragment 组件组成


                    抛出:


NullPointerException - 如果 uri 为 null 

              这个构造函数比一般的很少用,实例如下:(file3是我创建的一个File实例,对应的文件为file3.txt,) 

         URI uri=file3.toURI();//取出file3的uri 

         System.out.print(uri);//输出为:file:/F:/myeclipsecase/IoExample/file3.txt 

         file3.delete();//删除file3.txt 

         File fil = new File(uri);//重新创建file3.txt 

         fil.createNewFile();


        


        *******有一点要注意就是当你通过new File()来创建File类的实例时,在相应的文件下并没有生成你要创建的文件(以file.txt为例),他只是为你创建了一个file对象


而已只有调用file.creatNewFile()方法后你才能看到你想要生成的文件,即file.txt。当然也可以不用调用file.creatNewFile()方法直接用文件输入输出流对其操作,此工程同样会生成该文件


二、获取文件信息


这与File类的方法有关自己了解下File类中的方法就可以了(例如可以获取文件的name,length,path,parentpath以及是否问隐藏文件等)。


canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。


canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。


canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。


compareTo(File pathname) 按字母顺序比较两个抽象路径名。


createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。


createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。


createTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。


delete() 删除此抽象路径名表示的文件或目录。


deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。


equals(Object obj) 测试此抽象路径名与给定对象是否相等。


exists() 测试此抽象路径名表示的文件或目录是否存在。


getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。


getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。


getCanonicalFile() 返回此抽象路径名的规范形式。


getCanonicalPath() 返回此抽象路径名的规范路径名字符串。


getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。


getName() 返回由此抽象路径名表示的文件或目录的名称。


getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。


getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。


getPath() 将此抽象路径名转换为一个路径名字符串。


getTotalSpace() 返回此抽象路径名指定的分区大小。


getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。


hashCode() 计算此抽象路径名的哈希码。


isAbsolute() 测试此抽象路径名是否为绝对路径名。


isDirectory() 测试此抽象路径名表示的文件是否是一个目录。


isFile() 测试此抽象路径名表示的文件是否是一个标准文件。


isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。


lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。


length() 返回由此抽象路径名表示的文件的长度。


list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。


list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。


listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。


listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。


listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。


static File[] listRoots() 列出可用的文件系统根。


mkdir() 创建此抽象路径名指定的目录。


mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。


renameTo(File dest) 重新命名此抽象路径名表示的文件。


setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。


setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。


setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。


setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。


setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。


setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。


setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。


setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。


toString() 返回此抽象路径名的路径名字符串


三、文件的复制


文件的复制要用到I/O流,方法如下:


public static void copy(String frompath,String path)throws Exception{//String指定的path可以改为File类指定的对象 

         FileInputStream filefrom=new FileInputStream(path);//创建输入流对象 

         FileOutputStream filein=new FileOutputStream(frompath);//创建输出流对象 

         byte []b=new byte[1024]; 

         int blen; 

         while(true){ 

             if(-1!=(blen = filefrom.read(b))){//通过输入流将文件中的内容取出来 

              

                 filein.write(b,0,blen);//将文件中的内容输入的目的文件 

             } 

         } 

     } 

 四、文件的压缩 

 public class ZipTest { 


     /** 

      * @param args 

      */ 

     private void zip1(File srcf,File desf) throws Exception{ 

         ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(desf)); 

         zip2(zos,srcf,"test"); 

         System.out.println("压缩中。。。"); 

         zos.close(); 

     } 

     private void zip2(ZipOutputStream zos,File srcf,String path)throws Exception{ 

         if(srcf.isDirectory()){ 

             File sonfile[]=srcf.listFiles(); 

             zos.putNextEntry(new ZipEntry(path+"/")); 

              

             for(int i=0;i<sonfile.length;i++){ 

                 System.out.println(sonfile[i].getParent()); 

             } 

             path=path.length()==0?"":path+"/"; 

             for(int i=0;i<sonfile.length;i++){ 

                 zip2(zos,sonfile[i],sonfile[i].getPath()); 

                 //System.out.println(sonfile[i].getName()); 

             } 

         } 

         else{ 

             zos.putNextEntry(new ZipEntry(path)); 

             FileInputStream in=new FileInputStream(srcf); 

             byte b[]=new byte[1024]; 

             int k; 

             while(-1 != (k=in.read(b))){ 

                 zos.write(b,0,k); 

             }; 

             in.close(); 

         } 

          

          

     } 

     public static void main(String[] args)  { 

         // TODO Auto-generated method stub 

         File srcf=new File("test"); 

         File desf=new File("test.zip"); 

          

         ZipTest zip=new ZipTest(); 

         try { 

             zip.zip1(srcf, desf); 

             System.out.println("压缩成功!"); 

         } catch (Exception e) { 

             // TODO Auto-generated catch block 

             e.printStackTrace(); 

         } 

          

     } 


 }


步骤:创建ZipOutputStream类的对象out,调用out.putNextEntry(new ZipEntry(base+"/"))确定


压缩文件的入口位置,即相应的文件要在压缩文件中存放的位置,然后创建FileInputStream 对象


通过它的read()方法后去源文件中的信息,在调用out.write()将源文件中获取的数据写入压缩文件中。