Java筆記-File類基本操作

使用File類操作文件或目錄屬性


java.io 包爲我們提供了一些接口和類,對文件進行基本的操作,包括對文件和目錄屬性的操作、對文件讀寫的操作等。

File類構造方法


如何使用File 類操作文件或目錄:
一個File 對象可以代表一個文件或目錄。利用它可以對文件或目錄進行基本操作。

//創建一個 File 對象的語法如下:
//pathName表示所指向的文件路徑名。
//下面這句代碼表示:在內存中構建一個對象,關聯了一個路徑而已,沒有真正
//操作本地系統去創建
File file = new File(String pathName);

//例如:創建一個指向C盤根目錄下的test.txt文件的對象
File file = new File("C:\\test.txt");
File file = new File("C:/test.txt");

注意:在 Windows 操作系統中,文件路徑名中的分隔符可以使用正斜槓/;也可以用兩個反斜槓\\

File 類常用方法如下:


1.創建功能:

方法名稱 說明
boolean createNewFile() 創建指定名稱的空文件,不創建文件夾,如果路徑不存在則報錯
boolean mkdir() 創建路徑,只能創建一層,多層則返回 false 創建失敗
boolean mkdirs() 創建多層路徑,只能創建文件夾

2.刪除功能:

方法名稱 說明
boolean delete() 刪除此對象指定的文件或文件夾,文件夾不爲空則刪除失敗,返回false

3.重命名功能:

方法名稱 說明
boolean renameTo(File dest) 重命名功能。如果目標路徑和原路徑一致,則改名。如果目標路徑和原路徑不一致,則剪切並改名

4.判斷功能:

方法名稱 說明
boolean exists() 判斷文件或文件夾是否存在
boolean isFile() 判斷是否是文件
boolean isDirectory() 判斷是否是文件夾
boolean canRead() 判斷是否可讀
boolean canWrite() 判斷是否可寫
boolean isHidden() 判斷是否隱藏
boolean canExecute() 判斷是否可執行

5.基本獲取功能:

方法名稱 說明
String getPath() 返回此對象表示的文件的相對路徑名:當前工程下的路徑
String getAbsolutePath() 返回此對象表示的絕對路徑名:帶盤符的路徑
String getName() 返回此對象表示的文件或文件夾的名稱
long length() 返回文件的長度,單位爲字節,若文件不存在,則返回0L
long lastModified() 獲取最後修改時間
File getParentFile() 獲取父路徑的 file 對象

6.高級獲取功能:

方法名稱 說明
String[] list() 獲取當前路徑下所有的文件的名字,返回 String 數組。此處無法分清獲取到的名字到底是一個文件還是一個文件夾
File[] listFiles() 獲取當前文件下所有的文件封裝成一個 File 對象。這樣操作的好處是可以調用 File 類的功能進行文件的操作

例如:

package file_io;

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

public class FileMethods {
    public static void main(String[] args) {
        FileMethods fm = new FileMethods();
        File file = new File("F:\\demo\\hello.txt");
        fm.creat(file);
        fm.showFileInfo(file);
        // fm.delete(file);
    }

    /**
     * 顯示文件信息
     * @param file
     *            文件對象
     */
    public void showFileInfo(File file) {
        if (file.exists()) { // 判斷文件或目錄是否存在
            if (file.isFile()) {// 如果是文件
                System.out.println("文件名:" + file.getName());
                System.out.println("相對路徑:" + file.getPath());
                System.out.println("絕對路徑:" 
                    + file.getAbsolutePath());
                System.out.println("文件大小:" 
                    + file.length() + "字節");
            }
            if (file.isDirectory()) {
                System.out.println("此文件是目錄");
            }
        } else {
            System.out.println("文件不存在");
        }
    }

    /**
     * 創建文件的方法
     * @param file
     *            文件對象
     */
    public void creat(File file) {
        if (!file.exists()) {
            try {
                file.createNewFile();
                System.out.println("文件創建成功!");
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("文件已經存在!");
        }
    }

    /**
     * 刪除文件
     * @param file
     *            文件對象
     */
    public void delete(File file) {
        if (file.exists()) {
            file.delete();
            System.out.println("文件刪除成功!");
        }
    }
}

文件名稱過濾器的實現思想及代碼


//返回符合文件名稱要求的文件名稱 String數組
public String[] list(FilenameFilter filter)

//返回符合文件名稱要求的文件 File數組
public File[] listFiles(FilenameFilter filter)

具體實現如下:

1.自己寫個MyFilter類 實現 FilenameFilter接口

import java.io.File;
import java.io.FilenameFilter;

public class MyFilter implements FilenameFilter {

    @Override
    public boolean accept(File dir, String name) {
        //dir->文件的父路徑
        //name->文件名
        //文件名篩選:如果以.jpg結尾則符合要求返回true
        //else 返回false 不滿足要求
        if (name.endsWith(".jpg")) {
            return true;
        }
        return false;
    }

}

2.實現篩選:

public static void main(String[] args) {
        // file對象 指向目錄D:\\
        File file = new File("D:\\");
        // 調用 file.list(FilenameFilter filter) 方法
        // FilenameFilter 是Java自帶的接口
        //需要匿名對象來調用 即new MyFilter()
        //返回 滿足要求的文件名字數組
        String[] nameList = file.list(new MyFilter());
        for (String name : nameList) {
            System.out.println(name);
        }
        //同上 方法返回所有符合要求的文件 數組
        File[] fs = file.listFiles(new MyFilter());
        for (File f : fs) {
            System.out.println(f.getName());
        }
}

使用File刪除文件夾


目的:使用 File 刪除文件夾內所有內容+該文件夾

代碼如下:

import java.io.File;

public class DeleteFile {
    public static void main(String[] args) {
        //路徑千萬別寫成盤符根目錄,不然就啥都沒了,233
        File file = new File("D:\\a");
        del(file);
    }

    public static void del(File path) {
        File[] fs = path.listFiles();
        for (File f : fs) {
            if (f.isFile()) {
                System.out.println("文件->" + f.getName() + 
                    " 已被刪除:" + f.delete());
            } else {
                System.out.println("進入了文件夾--->" 
                    + f.getName());
                del(f);
            }
        }
        System.out.println(path.getName() + 
            "->文件夾已被清空,執行刪除文件夾操作!" + path.delete());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章