Java File 操作指南:基礎屬性判斷、資料夾和檔案的創建、以及簡單示範

Java File 操作指南:基礎屬性判斷、資料夾和檔案的創建、以及簡單示範

Overview of Content

在這篇指南中,我們將探討實做 Java 中檔案操作的各個方面。

從瞭解檔案的基礎屬性判斷,到探索如何創建資料夾和檔案,以及如何輕鬆使用實例演示,一步步帶你掌握檔案操作的精髓。無論你是初學者還是有經驗的開發者,這篇指南都將為你提供實用且易於理解的指導,讓你輕鬆應對 Java 中的檔案處理任務

寫文章分享不易,如有引用參考請詳註出處,如有指導、意見歡迎留言(如果覺得寫得好也請給我一些支持),感謝 😀


Java File 常用 Api

● File 是做檔案的基礎處理,可以創建、刪除檔案 & 拿取檔案資料夾的資訊,但不能讀取檔案內容,詳細的 API 可以參考 極客書 File,或 Java SE 官方網站

File 常用函數介紹
exists() : boolean資料夾 or 檔案是否存在
createNewFile() : boolean創建 檔案
mkdir() : boolean創建 資料夾
list() : String[]若是已存在的資料夾,則會列出資料夾內的檔案 (資料夾) 名 (不會遞迴搜尋),如果是檔案使用,則會返回 Null
getName() : String取得資料名稱
length() : long資料大小,要用 M 為單位則除 (1024 * 1024)
isHidden() : boolean資料夾是否隱藏
lastModified()最後更改的時間,這個時間是 Unit Time

File 基礎屬性判斷

● 基礎的有 getNamegetPathisHiddenlength (大小以 byte 為單位)、lastModified ... 等等的訊息


    private static void printFile() {
        File disk = new File("D:\\");

        // 找出 D 槽中所有的資料夾
        detailFileInfo(disk.listFiles());
    }

    private static void detailFileInfo(File[] files) {
        if(files == null) {
            return;
        }
        for(File f : files) {
            if(f.isHidden()) {
                continue;
            }
            System.out.println("File name: " + f.getName() + "\n" +
                    "Path: " + f.getPath() + "\n" +
                    "Length: " + f.length() + "\n" +
                    "Modified: " + f.lastModified() + "\n"      // Unit Time
            );
        }
    }

File 創建資料夾

● 使用 mkdir 就可以創建資料夾,若是沒有使用 exists() 檢查,創建資料夾則會失敗 (回傳 false)


private static void createDir(File... files) {
    for(File f : files) {
        if(f.exists()) {
            String[] fileNames = f.list();
            // 資料夾內的所有內容
            if(fileNames == null) {
                return;
            }
            for (String s : fileNames) {
                System.out.println(s);
            }
        } else {
            boolean newFile = f.mkdir();
            System.out.println("Create dir: " + newFile);
        }
    }
}

File 創建檔案

● 使用 File 的函數 createNewFile 就可以創建檔案,若是沒有使用 exists() 檢查,創建檔案則會失敗 (回傳 false)


private static void createFile(File... files) throws IOException {
    for(File f : files) {
        if(f.exists()) {
            // 純檔案不需要使用 list() 方法, 如果使用則會返回 null
            System.out.println("已存在的檔案, 檔案名: " + f.getName());
        } else {
            boolean newFile = f.createNewFile();
            System.out.println("Create File: " + newFile);
        }
    }
}

File usage Simple Demo

● 以下會用 Java File API 創建一個資料夾,並在內部創建一個 myFile.txt 檔案,來演示 Java File API 的基礎簡單使用範例


public class FiledDemo {

    public static void main(String[] str) {
        printFile();

        try {
            makeFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void printFile() {
        File disk = new File("D:\\");

        // 找出 D 槽中所有的資料夾
        detailFileInfo(disk.listFiles());
    }

    private static void detailFileInfo(File[] files) {
        if(files == null) {
            return;
        }
        for(File f : files) {
            if(f.isHidden()) {
                continue;
            }
            System.out.println("File name: " + f.getName() + "\n" +
                    "Path: " + f.getPath() + "\n" +
                    "Length: " + f.length() + "\n" +
                    "Modified: " + f.lastModified() + "\n"      // Unit Time
            );
        }
    }

    private static void makeFile() throws IOException {
        File dir = new File("D:\\JavaIO");
        File file = new File("D:\\JavaIO\\myFile.txt");

        createDir(dir);
        createFile(file);

        File[] files = dir.listFiles();
        if(files == null) {
            return;
        }

        // 格式轉換
        SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        for(File childFile : files) {
            String name = childFile.getName();
            // 轉換 Unit Time
            long mills = childFile.lastModified();
            String dateTimeStr =sdf.format(new Date(mills));

            System.out.println("File name: " + name + ", Date time: " + dateTimeStr);
        }
    }

    private static void createDir(File... files) {
        for(File f : files) {
            if(f.exists()) {
                String[] fileNames = f.list();
                if(fileNames == null) {
                    return;
                }
                for (String s : fileNames) {
                    System.out.println("已存在的資料夾, 內部檔案名: " + s);
                }
            } else {
                boolean newFile = f.mkdir();
                System.out.println("Create dir: " + newFile);
            }
        }
    }

    private static void createFile(File... files) throws IOException {
        for(File f : files) {
            if(f.exists()) {
                System.out.println("已存在的檔案, 檔案名: " + f.getName());
            } else {
                boolean newFile = f.createNewFile();
                System.out.println("Create File: " + newFile);
            }
        }
    }
}

目前的檔案資料層級 (cmd: tree -f)

--結果--


更多的 Java 語言相關文章

Java 語言深入

● 在這個系列中,我們全方位地探討了 Java 語言的各個核心主題,旨在幫助你徹底掌握這門強大的編程語言。無論你是想深入理解 Java 的基礎類型與變數作用域,還是探索異常處理與運算子的細節,這些文章都將為您提供寶貴的知識

深入 Java 物件導向

● 探索 Java 物件導向的奧妙,掌握介面、抽象類、繼承等重要概念!幫助你針對物件導向設計有更深入的了解!


Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

發表迴響