File類的使用

你的镁偷走了我的锌發表於2024-10-19

一、File的定義和構造方法

File是一個類,在java.io.File包下,需要進行導包

import java.io.File;

/*
    File【檔案】: 是計算機中所有檔案的抽象表示, 將來File物件目標可能存在,也可能不存在。

    構造方法:
        public File(String pathname)
        public File(String parent,String child)
        public File(File parent,String child)

    路徑:
        絕對路徑【完整路徑】:D:\projects\IdeaProjects\bigdara32\java\src\com\shujia\day15\ketang\a1.txt
        相對路徑:java/src/com/shujia/day15/ketang/a1.txt

 */
public class FileDemo1 {
    public static void main(String[] args) {
        //public File(String pathname)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang\\a1.txt");
//        System.out.println(f1);
//        File f2 = new File("java/src/com/shujia/day15/ketang/a1.txt");
//        System.out.println(f2);

        //public File(String parent,String child)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang","a1.txt");
//        System.out.println(f1);

        //public File(File parent,String child)
        File file = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang");
        File f1 = new File(file, "a1.txt");
        System.out.println(f1);

    }
}

二、其中的成員方法

import java.io.File;

/*
    建立功能
        public boolean createNewFile()
        public boolean mkdir()
        public boolean mkdirs()
    刪除功能
        public boolean delete()
    重新命名功能
        public boolean renameTo(File dest)

 */
public class FileDemo2 {
    public static void main(String[] args) throws Exception{
        File file = new File("java/src/com/shujia/day15/ketang/a1.txt");
        //public boolean createNewFile()
//        System.out.println(file.createNewFile());

        //public boolean mkdir() 建立單極資料夾
//        System.out.println(file.mkdir());

        //public boolean mkdirs() 建立多極資料夾
//        System.out.println(file.mkdirs());

        //public boolean delete() 只能刪除空資料夾,或一個檔案
//        System.out.println(file.delete());

        //public boolean renameTo(File dest)
//        File file2 = new File("java/src/com/shujia/day15/ketang/李剛.txt");
//        System.out.println(file.renameTo(file2));


    }
}

2.判斷

/*
    判斷功能
        public boolean isDirectory()
        public boolean isFile()
        public boolean exists()
        public boolean canRead()
        public boolean canWrite()
        public boolean isHidden()

 */
public class FileDemo3 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang/李剛.txt");

        // public boolean isDirectory()
        System.out.println(file.isDirectory());

        //public boolean isFile()
        System.out.println(file.isFile());

        //public boolean exists()
        System.out.println(file.exists());

        //public boolean canRead() 是否可讀
        System.out.println(file.canRead());

        //public boolean canWrite() 是否可寫
        System.out.println(file.canWrite());

        //public boolean isHidden() 是否被隱藏
        System.out.println(file.isHidden());
    }
}

3.基本獲取


import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
    基本獲取功能
        public String getAbsolutePath()
        public String getPath()
        public String getName()
        public long length()
        public long lastModified()

 */
public class FileDemo4 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang/李剛.txt");

        // public String getAbsolutePath() 獲取絕對路徑
        System.out.println(file.getAbsolutePath());

        //public String getPath() 獲取相對路徑
        System.out.println(file.getPath());

        //public String getName() 獲取檔案或資料夾的名字
        System.out.println(file.getName());

        //public long length() 獲取檔案中位元組數
        System.out.println(file.length());

        //public long lastModified() 獲取上一次修改的時間戳【毫秒級別的】
//        System.out.println(file.lastModified());
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date(file.lastModified()));
        System.out.println("上一次修改的時間:"+time);


    }
}

4.高階獲取

import java.io.File;

/*
    高階獲取功能
        public String[] list()
        public File[] listFiles()

 */
public class FileDemo5 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang");

        //public String[] list() 將目錄下所有的檔案以及資料夾的名字放到一個陣列中返回
        String[] nameList = file.list();
        if(nameList!=null){
            for (String s : nameList) {
                System.out.println(s);
            }
        }

//        assert nameList!=null;
//        for (String s : nameList) {
//            System.out.println(s);
//        }

        //public File[] listFiles() 將目錄下所有的檔案以及資料夾都封裝成一個一個的File物件放到一個陣列中
        File[] files = file.listFiles();
        if(files!=null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }


    }
}

三、練習

import java.io.File;

//需求:獲取ketang目錄下所有.txt字尾的檔案
public class FileDemo6 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang");

        //獲取當前目錄下所有的檔案或者資料夾的集合
        File[] files = file.listFiles();


        if(files!=null){
            for (File file1 : files) {
                if(file1.isFile() && file1.getName().endsWith(".txt")){
                    System.out.println(file1.getName());
                }
            }
        }
    }
}

6.練習2

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

/*
    public String[] list(FilenameFilter filter)
    public File[] listFiles(FilenameFilter filter)

 */
public class FileDemo7 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/ketang");

        //public File[] listFiles(FilenameFilter filter)
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // 當這裡返回true的時候,表示將檔案放到陣列中
                // dir表示當前目錄,name表示檔案或者資料夾名字
                File f = new File(dir, name);
                return f.isFile() && f.getName().endsWith(".txt");
            }
        });

        if(files!=null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }

    }
}

相關文章