1. 程式人生 > >File類檔案的操作

File類檔案的操作

File類可以對我們資源管理器裡邊的資料夾及檔案進行一些操作

下邊的是建立及使用的基本規則

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

public class FileTest {

    public static void main(String[] args) {

        // 硬碟上的任何檔案在Java中都可以使用File 類表示

        // pathname表示檔案的路徑
        File f1 = new File("D:\\JavaTest\\1.txt");

        // 通過第一個\來獲取第二個\的本來含義    轉義字元
File f2 = new File("D:/JavaTest/2.txt"); System.out.println("f1檔案是否存在:" + f1.exists()); System.out.println("f2檔案是否存在:" + f2.exists()); File f3 = new File("3.txt"); System.out.println("f3檔案是否存在:" + f3.exists()); // 絕對路徑: 從碟符開始的路徑 "D:\JavaTest\2.txt" // 相對路徑: 從當前資料夾開始的路徑 .\3.txt
// .表示當前資料夾, 可以省略 // 相對路徑是相對WorkSpace專案的資料夾為起始 // 獲取物件的路徑 System.out.println(f3.getAbsolutePath()); // 不同的作業系統對路徑中的分隔符有不同的表示方式 // File.separator 常量能自動根據作業系統設定分隔符 // 解決跨平臺路徑不一致的問題,推薦寫法 File f4 = new File("D:"+File.separator + "JavaTest"
+ File.separator + "3.txt"); // 建立或者刪除的時候,一定要先試用exists()判斷檔案是否存在 // 只有檔案存在時才進行刪除操作,不存在才進行建立操作 // 建立和刪除操作可能需要延遲 f1.delete(); try { f1.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 重新命名 File f5 = new File("D:JavaTest/5.txt"); f1.renameTo(f5); // File 沒有複製操作 // File只操作檔案,不處理裡面的內容 } }

File的一些方法的使用


import java.io.File;

public class FileTest2 {

    public static void main(String[] args) {

        File f1 = new File("D:\\JavaTest");
        if (f1.exists()) {
            System.out.println("檔案存在!");

            // 必須保證資料夾中沒有任何內容才能刪除
            boolean flag = f1.delete();
            if (flag) {
                System.out.println("刪除成功");
            }else {
                System.out.println("刪除失敗");
            }
        }else {

            // 建立資料夾  必須保證路徑上每一個資料夾都存在
            boolean flag = f1.mkdir();

            if (flag) {
                System.out.println("建立成功");
            }else {

                System.out.println("建立失敗");
            }
        }

        // DOS命令:mkdir  make directory 建立檔案 

        // mkdir() 必須保證路徑上的父資料夾都存在
        System.out.println("建立是否成功:" + f1.mkdir());

        // mkdirs() 建立路徑上所有不存在的資料夾
        System.out.println("建立是否成功:" + f1.mkdirs());
    }
}

import java.io.File;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;

public class FileTest4 {

    public static void main(String[] args) {

        File f1 = new File("D:/JavaTest/1.txt");

        System.out.println("是不是檔案:" + f1.isFile());
        System.out.println("是不是資料夾:" + f1.isDirectory());

        System.out.println("可讀:" + f1.canRead() );
        System.out.println("可寫:" + f1.canWrite() );
        System.out.println("是否是隱藏檔案" + f1.isHidden());

        System.out.println("大小:" + f1.length()); // 位元組

        // 時間戳 : 從19701100:00:00到指定時間經過了多少毫秒
        System.out.println("最後修改時間:" + f1.lastModified());

        // 時間戳轉化為對應的日期 1  
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0,ZoneOffset.ofHours(8));
        System.out.println(localDateTime);

        // 時間戳轉化為對應的日期  2
        Date date = new Date(f1.lastModified());
        System.out.println(date);

        File f2 = new File("D:/JavaTest");
        // 不包含資料夾中的檔案大小  
        System.out.println("資料夾大小:" + f2.length());

    }
}

使用File類的方法,可以寫一個遍歷資料夾的方法
使用的遞迴的方法.

import java.io.File;

public class FileTest5 {

    public static void main(String[] args) {

        File f1 = new File("D:/");

        String[] names = f1.list();

        for (String name : names) {
            // System.out.println(name);
        }

        // 當前資料夾下所有的檔案物件
        File[] files = f1.listFiles();

        // 遍歷所有物件
        for (File file : files) {

            // System.out.println(file.getName());
        }

        int x = getDirectoryLength(f1);
        System.out.println(x);

    }

    public static int getDirectoryLength(File file){

        int result = 0;

        // 大小 = 所有檔案的大小 + 所有資料夾的大小

        // 1.獲取所有的檔案
        File[] files = file.listFiles();

        // 2.遍歷進行累加
        for (File file2 : files) {
            if (file2.isFile()) {

                // 普通檔案通過length()  獲取長度進行類加
                result += file2.length();
                System.out.println(file2.getName());


            }else if(file2.isDirectory()) {

                // 資料夾通過自己的方法再獲取長度
                result += getDirectoryLength(file2);

                // 方法內部呼叫自己的方式叫做遞迴
                // 一定存在終止的條件,否則就會產生死迴圈
                // 一定會有一個資料夾沒有子資料夾
            }
        }

        return result;  
    }
}