JAVA教程第四講Java的例外處理和I/O流4.5

字號(hào):

4.5 文件處理
    I/O處理中,最常見的是對(duì)文件的操作,java.io包中有關(guān)文件處理的類有:File、FileInputStream、FileOutputStream、RamdomAccessFile和FileDescriptor;接口有:FilenameFilter。
    4.5.1 文件描述
    類File提供了一種與機(jī)器無關(guān)的方式來描述一個(gè)文件對(duì)象的屬性。下面我們介紹類File中提供的各種方法。
    ◇ 文件或目錄的生成
    public File(String path);/*如果path是實(shí)際存在的路徑,則該File對(duì)象
     /*表示的是目錄;如果path是文件名,則該File對(duì)象表示的是文件。*/
    public File(String path,String name);//path是路徑名,name是文件名
    public File(File dir,String name);//dir是路徑名,name是文件名
    ◇ 文件名的處理
    String getName( ); //得到一個(gè)文件的名稱(不包括路徑)
    String getPath( ); //得到一個(gè)文件的路徑名
    String getAbsolutePath( );//得到一個(gè)文件的絕對(duì)路徑名
    String getParent( ); //得到一個(gè)文件的上一級(jí)目錄名
    String renameTo(File newName); //將當(dāng)前文件名更名為給定文件的
                  完整路徑
    ◇ 文件屬性測(cè)試
    boolean exists( ); //測(cè)試當(dāng)前File對(duì)象所指示的文件是否存在
    boolean canWrite( );//測(cè)試當(dāng)前文件是否可寫
    boolean canRead( );//測(cè)試當(dāng)前文件是否可讀
    boolean isFile( ); //測(cè)試當(dāng)前文件是否是文件(不是目錄)
    boolean isDirectory( ); //測(cè)試當(dāng)前文件是否是目錄
    ◇ 普通文件信息和工具
    long lastModified( );//得到文件最近一次修改的時(shí)間
    long length( ); //得到文件的長度,以字節(jié)為單位
    boolean delete( ); //刪除當(dāng)前文件
    ◇ 目錄操作
    boolean mkdir( ); //根據(jù)當(dāng)前對(duì)象生成一個(gè)由該對(duì)象指定的路徑
    String list( ); //列出當(dāng)前目錄下的文件
    【例4-3】
    import java.io.*; //引入java.io包中所有的類
    public class FileFilterTest{
     public static void main(String args[]){
    File dir=new File("d://ex"); //用File 對(duì)象表示一個(gè)目錄
    Filter filter=new Filter("java"); //生成一個(gè)名為java的過濾器
    System.out.println("list java files in directory "+dir);
    String files[]=dir.list(filter); //列出目錄dir下,文件后綴名
                      為java的所有文件
    for(int i=0;i      File f=new File(dir,files[i]); //為目錄dir 下的文件或目錄
                      創(chuàng)建一個(gè)File 對(duì)象
      if(f.isFile()) //如果該對(duì)象為后綴為java的文件,
               則打印文件名
       System.out.println("file "+f);
      else
       System.out.println("sub directory "+f ); //如果是目錄
                            則打印目錄名
    }
     }
    }
    class Filter implements FilenameFilter{
     String extent;
     Filter(String extent){
    this.extent=extent;
     }
     public boolean accept(File dir,String name){
    return name.endsWith("."+extent); //返回文件的后綴名
     }
    }