Java的IO操做---File類

目標

  1)掌握File類做用java

  2)可使用file類中方法對文件進行讀寫操做。編程

File類

  惟一與文件有關的類。使用file類可進行建立或刪除操做,要想使用File類,首先觀察File類的構造方法。windows

  public File(String pathname);實例化File類的時候,必須設置好路徑。數組

  常量::網絡

public staitc final String pathSeparator;

  明明使用了static final定義的常量,這裏爲何使用了小寫方式。實際上這屬於JAVA的歷史遺留問題。spa

實例操做一:建立一個新文件。

  建立文件:操作系統

public boolean  creatNewFile() throws IOExcetion

  用以上方法就能夠建立文件,可是注意要有異常處理code

  在D盤建立一個文件:orm

import java.io.File ;
import java.io.IOException ;
public class FileDemo01{
    public static void main(String args[]){
        File f = new File("d:\\test.txt") ; // 實例化File類的對象,給出路徑
        try{
            f.createNewFile() ; // 建立文件,根據給定的路徑建立
        }catch(IOException e){
            e.printStackTrace() ;    // 輸出異常信息
        }
    }
};

  運行結果:對象

 

   步驟:首先建立File對象,建立對象的時候要給出文件路徑,而後用這個對象調用creatNewFile()方法,注意調用方法時候要有異常處理

  以上完成了文件建立功能,可是開發中以上程序編寫確定會出現錯誤,在各個操做系統中,路徑分隔符是不同的。例如:

  windows使用反斜槓:"\"

  Linux中使用正斜槓:"/"

  要想讓JAVA可移植加強,最好讓操做系統自動使用分隔符

package Thread1;

import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        System.out.println("pathSeparator:" + File.pathSeparator) ;    // 調用靜態常量
        System.out.println("separator:" + File.separator) ;    // 調用靜態常量
    }
}

  運行結果:

pathSeparator:;
separator:\

  要想保持可移植性,在編寫的時候應該使用File類中的常量。修改以前程序。

package Thread1;

import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ;        // 實例化File類的對象
        try{
            f.createNewFile() ;        // 建立文件,根據給定的路徑建立
        }catch(IOException e){
            e.printStackTrace() ;    // 輸出異常信息
        }
    }
}

  注意:在操做文件的時候必定要注意分隔符,使用File.separator表示。

刪除一個指定的文件

  刪除文件方法:

public boolean delete();

  將以前創建好的文件刪除掉。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ; // 實例化File類的對象 f.delete() ; // 刪除文件
    }
}

  運行結果:

  確實刪除了文件。

  此時文件確實刪除了,可是刪除以前最好進行判斷文件是否是存在

  在File類中可使用exists()方法判斷一個文件是否存在

public boolean exists();

  使用以上代碼加強以前程序。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator+"test.txt") ;        // 實例化File類的對象
        if(f.exists()){ // 若是文件存在則刪除
            f.delete() ;    // 刪除文件
        }
        else
            System.out.println("文件不存在");
    }
}

  運行結果:

文件不存在

  因爲以前已經刪除了,因此這裏文件不存在。

綜合建立,刪除文件的操做

  要求:給定一個路徑,若是文件存在刪除,不存在,建立之。

import java.io.File ;
import java.io.IOException ;
public class FileDemo06{
    public static void main(String args[]){
        File f = new File("d:"+File.separator+"test.txt") ;        // 實例化File類的對象
        if(f.exists()){    // 若是文件存在則刪除
            f.delete() ;    // 刪除文件
        }else{
            try{
                f.createNewFile() ;        // 建立文件,根據給定的路徑建立
            }catch(IOException e){
                e.printStackTrace() ;    // 輸出異常信息
            }
        }
    }
};

  提示:對於文件的後綴無關緊要。

建立文件夾

  使用mkdir()方法建立文件夾、

public boolean mkdir();

  實例;

import java.io.File ;
import java.io.IOException ;
public class FileDemo07{
    public static void main(String args[]){
        File f = new File("d:"+File.separator+"mldn") ;        // 實例化File類的對象
        f.mkdir() ;    // 建立文件夾
    }
};

  運行結果:建立成功一個名爲mldn的文件夾。

列出指定目錄的所有文件。

  若是給出一個目錄,能夠列出目錄中所有內容,可是列出的方法存在兩個:

  1,以字符串數組的形式返回。

public String [] list();

  2,以File數組形式返回:

pulbic File [] listFiles();

  操做一:list()方法:

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 實例化File類的對象
       String str[] = f.list() ; // 列出給定目錄中的內容
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]) ;
        }
    }
}

  運行結果:

$RECYCLE.BIN
360SoftMove
BDSoftMgrData
Config.Msi
FDownload
MSOCache
Program Files
System Volume Information
TrainingPackage_dna
TrainingPackage_zcgl
辦公軟件
個人文檔
搜狗高速下載
搞笑
文件清理.bat
編程軟件

  以上只是列出所有文件名字

  操做2,使用listFiles()方法列出。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 實例化File類的對象
        File files[] = f.listFiles() ; // 列出所有內容,注意須要一個files對象數組接受這個返回數組。
        for(int i=0;i<files.length;i++){
            System.out.println(files[i]) ;
        }
    }
}

  運行結果:

d:\$RECYCLE.BIN
d:\360SoftMove
d:\BDSoftMgrData
d:\Config.Msi
d:\FDownload
d:\GSP平臺
d:\GS管理套件
d:\MSOCache
d:\Program Files
d:\System Volume Information
d:\TrainingPackage_dna
d:\TrainingPackage_zcgl
d:\久其培訓
d:\辦公軟件
d:\個人文檔
d:\搜狗高速下載
d:\搞笑
d:\文件清理.bat
d:\編程軟件
d:\藍橋杯試題

  此時列出的是完整的路徑。這樣對於程序自己是很容易操做的。

判斷一個給定的路徑是否目錄。

  在File類中直接使用方法:public boolean isDirectory(); 

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[])
    {
        File f = new File("d:"+File.separator) ;        // 實例化File類的對象
        if(f.isDirectory()){    // 判斷是不是目錄
            System.out.println(f.getPath() + "路徑是目錄。") ;
        }else{
            System.out.println(f.getPath() + "路徑不是目錄。") ;
        }
    }
}

 

  運行結果:

d:\路徑是目錄。

列出指定目錄的所有內容

  若是給定一個目錄,則講目錄的所有文件列出來,可是列的時候可能存在子文件夾,子文件夾也有子文件夾。

  應該採用遞歸的形式。

package Thread1;
import java.io.File;
import java.io.IOException;

public class demo1{
    public static void main(String args[]){
        File my = new File("d:" + File.separator+"FDownload") ;    // 操做路徑
 print(my) ;
    }
    public static void print(File file){    // 遞歸調用
        if(file!=null){    // 判斷對象是否爲空
            if(file.isDirectory()){    // 若是是目錄
                File f[] = file.listFiles() ; // 列出所有的文件
                if(f!=null){    // 判斷此目錄可否列出
                    for(int i=0;i<f.length;i++){
                        print(f[i]) ; // 由於給的路徑有多是目錄,因此,繼續判斷,繼續遞歸。
                    }
                }
            }else{
                System.out.println(file) ;    // 輸出路徑
            }
        }
    }
};

  運行結果:

d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第一集 詩的起源[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第七集 親情詩[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第三集 春江花月夜[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第二集 楓橋夜泊[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第五集 民歌[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第六集 懷鄉詩[高清版].mp4
d:\FDownload\合併\0001.中國網絡電視臺-《詩詞中國》 第四集 黃鶴樓與鸛雀樓[高清版].mp4

  這裏用到了,判斷路徑是否爲文件夾:isDirection()。列出文件夾下目錄方法:listFiles()。還有遞歸。

相關文章
相關標籤/搜索