1. 程式人生 > >Java學習筆記36(File類)

Java學習筆記36(File類)

是不是 pat 硬盤 directory return reat gpo ole cls

File類可以對操作系統中的文件進行操作:

File類的靜態成員變量:

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        //File類的靜態方法
        String separator = File.pathSeparator;
        System.out.println(separator);
        //輸出:;    目錄分割符,Linux中是:
        separator = File.separator;
        System.out.println(separator);
        
//輸出:\ 目錄的名稱分隔符,Linux中是/ } }

File類的構造方法:

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        function1();
        function2();
        function3();
    }
    public static void function1(){
        File file = new File("d:\\lol");
        System.out.println(file);
        
//輸出:d:\lol } public static void function2(){ File file = new File("d:","lol"); System.out.println(file); //輸出:d:\lol } public static void function3(){ File parent = new File("d:"); File file = new File(parent,"lol"); System.out.println(file);
//輸出:d:\lol } }

File類的功能:

創建和刪除:

package demo;

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

public class FileDemo {
    public static void main(String[] args) throws IOException {
        function1();
        function2();
        function3();
    }

    public static void function1() throws IOException {
        // 創建文件,如果以及存在了,就不再創建
        File file = new File("d:\\lol\\java.txt");
        boolean b = file.createNewFile();
        System.out.println(b);
    }

    public static void function2() throws IOException {
        // 創建單級文件夾
        File file1 = new File("d:\\lol\\cs1.6");
        boolean b1 = file1.mkdir();
        System.out.println(b1);
        // 創建多級文件夾
        File file2 = new File("d:\\gta\\gta5\\game");
        boolean b2 = file2.mkdirs();
        System.out.println(b2);
    }

    public static void function3() throws IOException {
        // 刪除,不經過回收站,直接從硬盤中刪除
        File file = new File("d:\\lol\\java.txt");
        boolean b = file.delete();
        System.out.println(b);
    }
}

獲取功能:

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        function1();
        function2();
        function3();
        function4();
    }

    public static void function1() {
        File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe");
        String name = file.getName();// 獲取路徑最後部分的名字
        System.out.println(name);// Client.exe
    }

    public static void function2() {
        File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe");
        long length = file.length();// 文件的字節數
        System.out.println(length);// 813088
    }

    public static void function3() {
        File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe");
        File path = file.getAbsoluteFile();// 獲取文件的絕對路徑
        System.out.println(path);
        // 輸出:d:\lol\英雄聯盟\TCLS\Client.exe
    }

    public static void function4() {
        File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe");
        File parent = file.getParentFile();// 獲得父路徑
        System.out.println(parent);
        // 輸出:d:\lol\英雄聯盟\TCLS
    }
}

判斷功能:

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        function1();
        function2();
    }

    public static void function1() {
        File file = new File("d:\\lol\\英雄聯盟\\cs1.6.exe");
        boolean b = file.exists();// 判斷文件(夾)是否存在
        System.out.println(b);// false
    }

    public static void function2() {
        File file = new File("d:\\lol\\英雄聯盟");
        if (file.exists()) {
            boolean b = file.isDirectory();// 判斷是否為文件夾(路徑)
            System.out.println(b);// true
        }
    }
}

遍歷目錄獲取(list獲取):

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        function1();
        function2();
    }

    public static void function1() {
        File file = new File("d:\\lol\\英雄聯盟");
        String[] strArr = file.list();// 獲取目錄下的文件以及文件夾
        for (String str : strArr) {
            System.out.println(str);
        }
        /*
        輸出:
        7z.dll
        Cross
        Game
        LeagueClient
        SOFT_REPAIR
        SpannedFileList.txt
        TCLS
        TQM.ini
        英雄聯盟.lnk
        英雄聯盟卸載.exe
        訪問官網.url
        */
    }

    public static void function2() {
        // 一樣的功能,不過推薦使用這種
        // 因為這種功能更強大,可以後續進行更多的操作
        File file = new File("d:\\lol\\英雄聯盟");
        File[] fileArr = file.listFiles();
        for (File f : fileArr) {
            System.out.println(f);
        }
        /*
        輸出:
        d:\lol\英雄聯盟\7z.dll
        d:\lol\英雄聯盟\Cross
        d:\lol\英雄聯盟\Game
        d:\lol\英雄聯盟\LeagueClient
        d:\lol\英雄聯盟\SOFT_REPAIR
        d:\lol\英雄聯盟\SpannedFileList.txt
        d:\lol\英雄聯盟\TCLS
        d:\lol\英雄聯盟\TQM.ini
        d:\lol\英雄聯盟\英雄聯盟.lnk
        d:\lol\英雄聯盟\英雄聯盟卸載.exe
        d:\lol\英雄聯盟\訪問官網.url
        */
    }
}

利用遞歸遍歷一個目錄下所有文件:

package demo;

import java.io.File;

/*
 *  對一個目錄的下的所有內容,進行完全的遍歷
 *  方法的遞歸調用,自己調用自己
 */
public class FileDemo {
    public static void main(String[] args) {
        File dir = new File("d:\\lol\\英雄聯盟");
        getAllDir(dir);
    }

    /*
     * 定義方法,實現目錄的全遍歷
     */
    public static void getAllDir(File dir) {
        System.out.println(dir);
        // 調用方法listFiles()對目錄,dir進行遍歷
        File[] fileArr = dir.listFiles();
        for (File f : fileArr) {
            // 判斷變量f表示的路徑是不是文件夾
            if (f.isDirectory()) {
                // 是一個目錄,就要去遍歷這個目錄
                // 繼續調用getAllDir,傳遞他目錄
                getAllDir(f);
            } else {
                System.out.println(f);
            }
        }
    }
}

文件過濾器:

在遍歷目錄的時候,可以根據需要,只獲取滿足條件的文件

package demo;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("d:\\lol\\英雄聯盟");
        File[] fileArr = file.listFiles(new MyFilter());
        for(File f:fileArr){
            System.out.println(f);
        }
    }
}
//只打印者一條:d:\lol\英雄聯盟\英雄聯盟卸載.exe
package demo;

import java.io.File;
import java.io.FileFilter;

public class MyFilter implements FileFilter {
    public boolean accept(File pathname) {
        // 是exe文件返回true,否則返回false
        return pathname.getName().endsWith(".exe");
    }
}

Java學習筆記36(File類)