天天看點

【javase複習】## day9 IO---- File類 ##

IO流

主要的作用是解決裝置與裝置之間 的資料傳輸問題。

資料一般是以 檔案的形式儲存在硬碟上

是以引出 File類~~

File類:描述一個 檔案或者檔案夾

File類的構造方法:

File(String pathname)  指定檔案或者檔案夾的路徑建立一個File檔案。

File(File parent, String child)   根據 parent 抽象路徑名和 child 路徑名字元串建立一個新 File 執行個體。 

File(String parent, String child) 
           
public class rrr {
    public static void main(String[] args) {
        File f = new File("E:\\a.txt");
        System.out.println(f.exists());    //File(String pathname) 


        File parentfile = new File("E:\\");       //File(File parent, String child)
        File child =  new File(parentfile,"a.txt");
        System.out.println(child.exists());

        File ff = new File("E:\\","a.txt");     //File(String parent, String child) 
        System.out.println(ff.exists());



    }

}
           

注意一下:

windows的目錄分隔符是 \ 其實/也認識,而且隻需要寫1個 不用轉義

linux的目錄分隔符是 /

File的 static String separator 常量确定了系統的分隔符

在不同系統列印出來不一樣的。

檔案的路徑有:

絕對路徑: 不解釋! getAbsolutePath ()可以擷取檔案對象的絕對路徑

相對路徑: 相對于程式目前所在路徑, 用. ..等拼湊出來!!,可以用如下方法獲得程式目前路徑!!注意:目前路徑和目标檔案不在一個盤下面是寫不了相對路徑的!!!! 因為退到計算機層,後面就是絕對路徑了。

File f = new File(".");
        System.out.println(f.getAbsolutePath());
           

是以檔案也可以用相對路徑表示, 即省略不寫目前路徑

File f = new File(".");
        System.out.println(f.getAbsolutePath());//擷取當路徑
        File ff =new File("src/b.txt");      //隻寫相對路徑。
        System.out.println(ff.exists());  
           

File類常用方法:::

建立方法:

createNewFile() 在指定位置建立一個空檔案,成功就傳回true,如果已存在就不建立然後傳回false

mkdir() 在指定位置建立目錄,這隻會建立最後一級目錄,如果上級目錄不存在就抛異常。

mkdirs() 在指定位置建立目錄,這會建立路徑中所有不存在的目錄。 renameTo(File

dest) 重命名檔案或檔案夾,也可以操作非空的檔案夾,檔案不同時相當于檔案的剪切!!!剪切時候不能操作檔案夾。移動/重命名成功則傳回true,失敗則傳回false。

用代碼示範一下:

public static void main(String[] args) throws IOException {
        File f = new File("E:/q.txt");
        System.out.println(f.createNewFile());

        File ff = new File("E:/新檔案夾");
        File fff = new File("E:/第一層/第二層");

        System.out.println("建立檔案夾"+ff.mkdir());
        System.out.println("又建立一次同名檔案夾"+ff.mkdir());
        System.out.println("用mkdir方法建立多級檔案夾"+fff.mkdir());

        System.out.println("用mkdirs方法建立多級檔案夾"+fff.mkdirs());



    }
           

true

建立檔案夾true

又建立一次同名檔案夾false

用mkdir方法建立多級檔案夾false

用mkdirs方法建立多級檔案夾true

①删除方法

delete() 删除檔案或一個空檔案夾,如果是檔案夾且不為空,則不能删除,成功傳回true,失敗傳回false。

deleteOnExit() 在虛拟機終止時,請求删除此抽象路徑名表示的檔案或目錄,保證程式異常時建立的臨時檔案也可以被删除

②判斷方法:

exists() 檔案或檔案夾是否存在。

isFile() 是否是一個檔案,如果不存在,則始終為false。

isDirectory() 是否是一個目錄,如果不存在,則始終為false。

isHidden() 是否是一個隐藏的檔案或是否是隐藏的目錄。 isAbsolute() 測試此抽象路徑名是否為絕對路徑名。

③擷取方法 :

getName() 擷取檔案或檔案夾的名稱,不包含上級路徑。

getPath() 傳回絕對路徑,可以是相對路徑,但是目錄要指定

getAbsolutePath() 擷取檔案的絕對路徑,與檔案是否存在沒關系

length() 擷取檔案的大小(位元組數),如果檔案不存在則傳回0L,如果是檔案夾也傳回0L。

getParent() 傳回此抽象路徑名父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則傳回null。

lastModified() 擷取最後一次被修改的時間。(Date對象 毫秒值) 用SimpleDateFormat的format可以轉換成時間字元串

檔案夾相關:

staic File[] listRoots() 列出所有的根目錄(Window中就是所有系統的盤符)

list() 傳回目錄下的檔案或者目錄名,包含隐藏檔案。對于檔案這樣操作會傳回null。 ——-傳回String數組!!是以隻是傳回檔案名字!

listFiles() 傳回目錄下的檔案或者目錄對象(File類執行個體),包含隐藏檔案。對于檔案這樣操作會傳回null。————–傳回File數組!!都是File對象!!

list(FilenameFilter filter) 傳回指定目前目錄中符合過濾條件的子檔案或子目錄。對于檔案這樣操作會傳回null。

listFiles(FilenameFilter filter) 傳回指定目前目錄中符合過濾條件的子檔案或子目錄。對于檔案這樣操作會傳回null。

特别關注一下最後一個方法!!

listFiles(FilenameFilter filter) 傳回指定目前目錄中符合過濾條件的子檔案或子目錄。對于檔案這樣操作會傳回null。

要使用這個方法 需要一個自定義類,實作FilenameFilter 接口,重寫accept方法。

【javase複習】## day9 IO---- File類 ##
class MyFilter implements FilenameFilter{

    @Override
    public boolean accept(File dir, String name) {
        //System.out.println("檔案夾:"+dir+" 檔案名:"+ name);
        return name.endsWith(".java");
    }

}



public class Demo7 {

    public static void main(String[] args) {
        File dir = new File("F:\\1208\\day06\\代碼\\day06");
        listJava2(dir);

    }

    public static void listJava2(File dir){
        File[] files = dir.listFiles(new MyFilter()); //得到檔案夾下面的所有以java結尾的子檔案與檔案夾。
        for(File file : files){
            System.out.println(file.getName());
        }
    }