【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方法。

這裏寫圖片描述

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());
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章