1. 程式人生 > >44、File類簡介

44、File類簡介

使用File類建立資料夾

File類在java.io包下,看名字應該可以猜到,這個類是跟資料夾操作有關,下面使用File類中的方法在硬碟中建立資料夾。

package com.sutaoyu.file;

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

public class test_1 {
    public static void main(String[] args) throws IOException {
        //如果檔案存在,就不建立了,返回false,如果不存在就會建立,返回true
        File file1 = new
File("D:\\hello.txt"); System.out.println(file1.createNewFile()); //如果資料夾存在,就不建立了,返回false,如果不存在就會建立,返回true File file2 = new File("D:\\new"); System.out.println(file2.mkdirs()); //可以建立多級目錄,如果資料夾存在,就不建立了,返回false,如果不存在就會建立,返回true File file3 = new
File("D:\\onkey\\1024"); System.out.println(file3.mkdirs()); //只能建立資料夾 File file4 = new File("D:\\monkey\\1024.txt"); System.out.println(file4.mkdirs()); //如果不寫碟符,會預設在專案的根目錄裡面建立 File file5 = new File("1026.txt"); System.out.println(file5.createNewFile()); System.out.println(file5.exists()); } }

注意:如果沒有寫碟符路徑,預設在專案路徑裡面建立

使用File類重新命名和刪除檔案

  • public boolean renameTo(File dest):把檔案重新命名為指定的檔案路徑
  • public boolean delete():刪除檔案或者資料夾
package com.sutaoyu.file;

import java.io.File;

public class test_2 {
    public static void main(String[] args) {
//        //舊名字
//        File oldFile = new File("D:\\hello.txt");
//        //新名字
//        File newFile = new File("D:\\world.txt");
//        oldFile.renameTo(newFile);
        
        //舊名字
//        File oldFile = new File("D:\\world.txt");
//        //新名字
//        File newFile = new File("D:\\monkey\\java.txt");
//        //如果兩個檔案路徑不一致,則會將舊檔案剪下到新的檔案路徑中再重新命名
//        oldFile.renameTo(newFile);
//        
//        //不會將檔案放到回收站中,而是直接刪除
//        File del = new File("D:\\monkey\\java.txt");
//        //刪除
//        System.out.println(del.delete());
        
         //如果資料夾下有其他檔案,則不會刪除
        File del1 = new File("D:\\monkey");
        System.out.println(del1.delete());
    }
    
}

注意:

  • 重新命名時,如果兩個路徑不相同,則會將被修改的檔案進行剪下,然後再重新命名放到新的路徑裡面
  • 刪除時不會放入回收站,並且要確保被刪除的檔案裡面沒有其他檔案才可以進行刪除

File類中關於判斷的方法

  • public boolean isDirectory():判斷是否是目錄
  • public boolean isFile():判斷是否是檔案
  • public boolean exists():判斷是否存在
  • public boolean isHidden():判斷是否隱藏
package com.sutaoyu.file;

import java.io.File;

public class test_3 {
    public static void main(String[] args) {
        //判斷是否是資料夾
        File file1 = new File("D:\\monkey");
        System.out.println(file1.isDirectory());
        //判斷是否是檔案
        System.out.println(file1.isFile());
        
        //判斷是否是資料夾
        File file2 = new File("D:\\new.txt");
        System.out.println(file2.isDirectory());
        //判斷是否是檔案
        System.out.println(file2.isFile());
        //判斷檔案是否存在
        System.out.println(file2.exists());
        
        //判斷檔案是否隱藏
        File file3 = new File("D:\\hidden");
        System.out.println(file3.isHidden());
    }
}

File類其他常用方法

  • public String getAbsolutePath():獲取絕對路徑
  • public long length():獲取檔案大小。位元組數
  • public long lastModified():獲取最後一次的修改時間,毫秒值
  • public String[] list():獲取檔案路徑下所有檔名(同一層級目錄)
  • public File[] listFiles():獲取檔案路徑下所有File物件陣列
package com.sutaoyu.file;

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

public class test_4 {
    public static void main(String[] args) {
        File file1 = new File("1024.txt");
        //檢視絕對路徑
        System.out.println(file1.getAbsolutePath());
        //檔案的大小,單位是位元組
        System.out.println(file1.length());
        //最後修改時間
        Date date = new Date(file1.lastModified());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(sdf.format(date));

        File file2 = new File("F:\\monkey1024\\01-JavaSE\\程式碼\\code\\chapter-08");
        //獲取目錄下的同級檔案或資料夾的名稱
        String[] nameArray = file2.list();
        for(String name : nameArray){
            System.out.println(name);
        }

        //獲取目錄下的同級檔案或資料夾的File物件
        File[] fileArray = file2.listFiles();
        //打印出檔案的絕對路徑
        for(File file : fileArray){
            System.out.println(file);
        }
    }
}

練習:

統計專案根目錄下以.txt結尾的檔案數量,並將檔名打印出來

分析:

獲取專案根目錄下的檔名
對檔名進行判斷是否是以.txt結尾

程式碼實現:

package com.sutaoyu.file;

import java.io.File;

public class test_5 {
    public static void main(String[] args) {
        File file = new File("D:\\java\\Eclipse\\chapter-08\\files\\");
        File[] fileArray = file.listFiles();
        
        //統計出現次數
        int count = 0;
        for(File name : fileArray) {
            String s = name.toString();
            //判斷是否是以.txt檔案結尾
            if(s.endsWith(".txt")) {
                if(name.isFile()) {
                    count++;
                    System.out.println(count);
                }
            }
        }
        System.out.println("以.txt檔案結尾的數量是" + count + "個");
    }
}