Java 高級Java File類的使用總結。

一、File類構造方法

3種常見構造方法

  • 1.File(String pathname),(最常用)
  • 通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
  • 2.File(String parent, String child)
  • 從父路徑名字符串和子路徑名字符串創建新的 File實例。
  • 3.File(File parent, String child)
  • 從父抽象路徑名和子路徑名字符串創建新的 File實例

1.代碼

package Java學習.Java高級.IO.File類.File的3個構造方法;

import java.io.File;

/**
 * 一、
 * 1.File(String pathname)
 * 通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
 * 2.File(String parent, String child)
 * 從父路徑名字符串和子路徑名字符串創建新的 File實例。
 * 3.File(File parent, String child)
 * 從父抽象路徑名和子路徑名字符串創建新的 File實例
 * 4. 不常用:File(URI uri)
 * 二、File 重寫了toString()方法打印路徑
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("-----1.File(String pathname)------");
        File file = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習" +
                "\\Java高級\\IO\\File類\\File的3個構造方法");
        System.out.println(file);//
        System.out.println("----------2.File(String parent, String child)------");
        File file1 = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習",
                "\\Java高級\\IO\\File類\\File的3個構造方法");
        System.out.println(file1);
        System.out.println("--------3.File(File parent, String child)--------");
        File parantFile = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習");
        File file2 = new File(parantFile, "\\Java高級\\IO\\File類\\File的3個構造方法");
        System.out.println(file2);
        System.out.println("父路徑parentFile 用對象可以調用File的方法,諸多好處");
        System.out.println("最常用的是方法1 簡單直接。");
    }
}

注意:構造File的時候儘量使用絕對路徑,相對路徑有相對更目錄,如果有包的話用不了,

二、Java 靜態字段。靜態分割符號

1.這個Linux系統能用到

  • 一、2個靜態分割符號的字段field
    1. File.pathSeparator 路徑分割符號 String 版(windows ; linux : )
  • File.pathSeparatorChar 路徑分割符 Char 類型
  • 2.File.separator 分割符 (windows \ linux /)
  • File.separatorChar 分割符Char類型

2 .code

package Java學習.Java高級.IO.File類.File的靜態分割符;

import java.io.File;

/**
* 一、2個靜態分割符號的字段field
* 1. File.pathSeparator  路徑分割符號 String 版(windows ; linux :)
*    File.pathSeparatorChar 路徑分割符 Char 類型
* 2.File.separator 分割符 (windows \ linux /)
*   File.separatorChar 分割符Char類型
*/
public class Main {
   public static void main(String[] args) {
       System.out.println("File.pathSeparator路徑分割符號:windows:   "+ File.pathSeparator);
       System.out.println("File.Separator 分割符windows:   "+File.separator);
   }
}

三、File常見方法。

1.獲取File信息常用4方法

*一、4個獲取功能的方法

    1. file.getAbsolutePath()
  • 返回不管file是相對路徑還是絕對路徑,都返回絕對路徑
  • 2.getPath()
  • 就是普通的打印的toString()方法。
  • 3.getName()
  • 獲取結尾部分,文件或者文件夾
  • 4.length()
  • 文件的大小,字節,文件夾沒有大小(0)。

code

package Java學習.Java高級.IO.File類.File類方法.File類獲取功能的方法;

import java.io.File;

/**
*一、4個獲取功能的方法
* 1. file.getAbsolutePath()
* 返回不管file是相對路徑還是絕對路徑,都返回絕對路徑
* 2.getPath()
* 就是普通的打印的toString()方法。
* 3.getName()
* 獲取結尾部分,文件或者文件夾
* 4.length()
* 文件的大小,字節,文件夾沒有大小(0)。
*
*/
public class Main {
   public static void main(String[] args) {
       System.out.println("--------1.getAbsolutePath(File file)-----");
       File file = new File("Main.java");
       System.out.println("獲取絕對路徑: "+file.getAbsolutePath());
       System.out.println("-----2.getPath()-----");
       System.out.println("獲取file對象路徑和toString相同: "+file.getPath());
       System.out.println("------3.getName()----");
       System.out.println("獲取對象路徑的結尾的名稱(文件或者文件夾): "+file.getName());
       System.out.println("------4.length()-----");
       File file1 = new File(file.getAbsolutePath());
       System.out.println("獲取文件的大小(字節)(文件夾和不存在的文件爲0): "+file1.length());


   }
}

2.判斷File信息常用3方法。

package Java學習.Java高級.IO.File類.File類方法.File類判斷功能方法;

import java.io.File;

/**
 * 一、三個判斷功能的方法:可用於獲取或者操作文件之前的判斷
 * 1. file.exist() :
 * 文件或者目錄是否存在,路徑不存在false
 * 2. file.isDirectory()
 * 文件目錄是否文件夾結尾 路徑不存在false
 * 3. file.isFile()
 * 文件目錄是否文件結尾 路徑不存在false
 */
public class Main {
    public static void main(String[] args) {
        File file = new File("Main.java");
        System.out.println("--1. file.exist() :-----");
        System.out.println(file.exists());
        System.out.println("----2. file.isDirectory()---");
        System.out.println(file.isDirectory());
        System.out.println("----3. file.isFile() ---");
        System.out.println(file.isFile());

    }
}

4.操作文件File的常見方法(重要)

4.1創建和刪除目錄

1.創建和刪除目錄的4個方法,

  • 一、 boolean file.createNewFile()
  • 1.文件目錄不存在 拋出異常 IOException
  • 2.目錄下的文件不存在返回false
  • 二、boolean delete() 沒有走回收站非常危險
  • 1.刪除該目錄下的文件,或者文件目錄,只有一層
  • 2.成功true
  • 三、boolean mkdir() :
  • 1.創建目錄只能有一層
  • 四、mkdirs()
  • 1.可創建多層.

2.code

package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.創建刪除;

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

/**
 * 一、 boolean file.createNewFile()
 * 1.文件目錄不存在 拋出異常 IOException
 * 2.目錄下的文件不存在返回false
 * 二、boolean delete() 沒有走回收站非常危險
 * 1.刪除該目錄下的文件,或者文件目錄,只有一層
 * 2.成功true
 * 三、boolean mkdir() :
 * 1.創建目錄只能有一層
 * 四、mkdirs()
 * 1.可創建多層.
 */
public class Main {
    private static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習" +
            "\\Java高級\\IO\\File類\\File類方法\\File操作文件功能方法\\創建刪除\\";

    public static void main(String[] args) throws IOException {
        System.out.println("-------一a.createNewFile()----------");
        File a1 = new File(url + "新文件a1.txt");
        if(a1.exists()){
            a1.delete();
        }
        System.out.println("a1.createNewFile(): " + a1.createNewFile());

        System.out.println("-------二b.delete()----------");
        File b1 = new File(url + "新文件b1.txt");
        b1.createNewFile();
        System.out.println("b1.delete(): " + b1.delete());

        System.out.println("-------三c.mkdir()----------");
        File c1 = new File(url + "第一層dir");
        File c2 = new File(url + "2.1層\\2.2層");
        if (c1.exists()) {
            c1.delete();
        }
        if (c2.exists()) {
            c2.delete();
        }
        System.out.println("一層c1: " + c1.mkdir());
        System.out.println("同時2層 c2: " + c2.mkdir());
        c1.delete();
        c2.delete();
        System.out.println("-------四d.----------");

        File d1 = new File(url + "同時3層第1層\\同時3層第2層\\同時3層第3層");
        if (d1.exists()) {
            d1.delete();
        }
        System.out.println("d1.mkdirs(): " + d1.mkdirs());


    }
}
4.2 遍歷文件夾目錄

1.給出路徑文件夾目錄的2個方法

  • 一、2種方法。給出目錄數組
  • 1.String[] list()
  • 返回目錄名稱字符串數組 file.getName()
  • 2.File[] listFiles()
  • 返回目錄File類型數組,
  • listFiles(new FileFilter) 還可以傳入過濾器的接口。(後面會詳講)
  • 二、注意:
  • 1.url不存在,file.list()返回空,再遍歷就會 空指針異常
  • 2.url不是指定 目錄 ,空指針異常 nullPointerException
  • 3.隱藏文件和文件夾也能識別

2.代碼

package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.遍歷文件夾目錄;

import java.io.File;

/**
 * 一、2種方法。給出目錄數組
 * 1.String[] list()
 *
 * 2.File[] listFiles()
 *
 * 二、注意:
 * 1.url不存在,file.list()返回空,再遍歷就會 空指針異常
 * 2.url不是指定 目錄 ,空指針異常 nullPointerException
 * 3.隱藏文件和文件夾也能識別
 */
public class Main {
    static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\J" +
            "ava學習\\Java高級\\IO\\File類\\File類方法\\File操作文件功能方法";
    public static void main(String[] args) {
        System.out.println("----1.String[] list()------");
        File file1 = new File(url);
        String[] list = file1.list();
        if (list!=null){
            for (String s : list) {
                System.out.println(s);
            }
        }

        System.out.println("-----2.File[] listFiles()----");
        File file2 = new File(url);
        File[] listFiles = file2.listFiles();
        if(listFiles!=null){
            for (File listFile : listFiles) {
                System.out.println(listFile);
            }
        }
    }
}

4.3練習項目:

目的:打印src中的所有.java 文件,,使用FileFilter文件過濾器,和遞歸知識

介紹FileFilter過濾器接口。
    • 一、需求:打印src中的所有.java 文件,,使用FileFilter文件過濾器
  • 二、使用方法 : 帶參數的listFiles()
  • file.listFiles(new FileFilter{}),重寫過濾的accept方法即可。
  • 三、原理 listFiles(new FileFilter{}),
  • 1.獲取File的list數組,
  • 2.將數組放到accept一個個判斷
  • 3.true就保存起來。
代碼
package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.遍歷文件夾目錄.練習3FileFilter文件過濾器實現練習2;

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

/**
 *  * 一、需求:打印src中的所有.java 文件,,使用FileFilter文件過濾器
 *  二、使用方法 : 帶參數的listFiles()
 *  file.listFiles(new FileFilter{}),重寫過濾的accept方法即可。
 *  三、原理 listFiles(new FileFilter{}),
 *  1.獲取File的list數組,
 *  2.將數組放到accept一個個判斷
 *  3.true就保存起來。
 */
public class Demo {
    static void useFileFiltersearchJava(File file) {
        File[] listFiles = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory();
            }
        });
        for (File listFile : listFiles) {
            if (listFile.isDirectory()) {
                useFileFiltersearchJava(listFile);
            } else if (listFile.isFile()) {
                System.out.println(listFile.getName());
            }
        }

    }

    public static void main(String[] args) {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src";
        useFileFiltersearchJava(new File(url));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章