天天看點

33.File類

File類

1.File類的概述和構造方法

  • A:File類的概述
    • File更應該叫做一個路徑
      • 檔案路徑或者檔案夾路徑
      • 路徑分為絕對路徑和相對路徑
      • 絕對路徑是一個固定的路徑,從盤符開始
      • 相對路徑相對于某個位置,在eclipse下是指目前項目下,在dos下
    • 檢視API指的是目前路徑
    • 檔案和目錄路徑名的抽象表示形式
  • B:構造方法
    • File(String pathname):根據一個路徑得到File對象
    • File(String parent, String child):根據一個目錄和一個子檔案/目錄得到File對象
    • File(File parent, String child):根據一個父File對象和一個子檔案/目錄得到File對??
  • C:案例示範
package heima_day19;
import java.io.File;
public class Demo3_File {

     public static void main(String[] args) {

           File file = new File("F:\\項目\\電子文檔");//檔案的路徑

           System.out.println(file.exists());

           

           File file1 = new File("xxx.txt");

           System.out.println(file1.exists());

           

           String parent = "F:\\項目";

           String child = "電子文檔";

           File file2 = new File(parent,child);

           System.out.println(file2.exists());

           

           File parent1 =new File("F:\\項目\\電子文檔");

           String child1 = "第10章  手機網絡遊戲.pdf";

           File file3 = new File(parent1,child1);

           System.out.println(file3.exists());

     }



}
           

2.File類的建立功能

  • A:建立功能
    • public boolean createNewFile():建立檔案 如果存在這樣的檔案,就不建立了
    • public boolean mkdir():建立檔案夾 如果存在這樣的檔案夾,就不建立了
    • public boolean mkdirs():建立檔案夾,如果父檔案夾不存在,會幫你建立出來
  • B:案例示範
package heima_day19;
import java.io.File;
import java.io.IOException;

public class Demo4_File {
	/**
	 * 注意事項:
		* 如果你建立檔案或者檔案夾忘了寫盤符路徑,那麼,預設在項目路徑下。
	 */
	public static void main(String[] args)throws IOException {
		File file = new File("yyy.txt");
		System.out.println(file.createNewFile());//如果沒有就建立,傳回true
		
		File dir1 = new File("aaa");
		System.out.println(dir1.mkdir());
		
		File dir2 = new File("bbb\\ccc");
		System.out.println(dir2.mkdirs());
	}

}

           

3.File類的重命名和删除功能

  • A:重命名和删除功能
    • public boolean renameTo(File dest):把檔案重命名為指定的檔案路徑
    • public boolean delete():删除檔案或者檔案夾
  • B:重命名注意事項
    • 如果路徑名相同,就是改名。
    • 如果路徑名不同,就是改名并剪切。
  • C:删除注意事項:
    • Java中的删除不走資源回收筒。
    • 要删除一個檔案夾,請注意該檔案夾内不能包含檔案或者檔案夾
  • D:案例示範
package heima_day19;
import java.io.File;
public class Demo5_File {

     public static void main(String[] args) {
           File file1 = new File("yyy.txt");
           File file2 = new File("aaa.txt");
           //System.out.println(file1.renameTo(file2));       
           System.out.println(file2.delete());
           //如果删除一個檔案夾,那麼檔案夾必須是空的
     }
}
           

4.File類的判斷功能

  • A:判斷功能
    • public boolean isDirectory():判斷是否是目錄
    • public boolean isFile():判斷是否是檔案
    • public boolean exists():判斷是否存在
    • public boolean canRead():判斷是否可讀
    • public boolean canWrite():判斷是否可寫
    • public boolean isHidden():判斷是否隐藏
  • B:案例示範
package heima_day19;
import java.io.File;
public class Demo6_File {
     public static void main(String[] args) {

           File dir1 = new File("aaa");
           File dir2 = new File("ooo.txt");     
         
           System.out.println(dir1.isDirectory());//判斷是否是檔案夾
           System.out.println(dir2.isDirectory());        
           System.out.println(dir1.isFile());//判斷是否是檔案
           System.out.println(dir2.isFile());
           System.out.println("----");
           dir2.setReadable(false);//設定檔案是否可讀
           System.out.println(dir2.canRead());//windows系統認為所有檔案都是可讀的
           dir2.setWritable(false);
           System.out.println(dir2.canWrite());//windows系統可以設定為不可寫
           System.out.println(dir2.isHidden());//判斷是否隐藏
     }
}
           

5.File類的擷取功能

  • A:擷取功能
    • public String getAbsolutePath():擷取絕對路徑
    • public String getPath():擷取路徑
    • public String getName():擷取名稱
    • public long length():擷取長度。位元組數
    • public long lastModified():擷取最後一次的修改時間,毫秒值
    • public String[] list():擷取指定目錄下的所有檔案或者檔案夾的名稱數組
    • public File[] listFiles():擷取指定目錄下的所有檔案或者檔案夾的File數組
  • B:案例示範
package heima_day19;

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

public class Demo7_File {
	public static void main(String[] args) {
		File file = new File("ooo.txt");
		System.out.println(file.getAbsolutePath());//擷取絕對路徑
		System.out.println(file.getPath());//擷取構造方法傳入的路徑
		System.out.println(file.getName());//擷取檔案或檔案夾的名稱
		System.out.println(file.length());
		System.out.println("-----");
		System.out.println(file.lastModified());//擷取最後一次的修改時間,毫秒值
		Date d = new Date(file.lastModified());
		System.out.println(d);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		System.out.println(sdf.format(d));
		System.out.println("-----");
		File dir = new File("bbb");
		String[] arr = dir.list();
		for (String string : arr) {
			System.out.println(string);
		}
		File []  subFiles = dir.listFiles();
		for (File file2 : subFiles) {
			System.out.println(file2);
		}
	}
}

           

6.檔案名稱過濾器的概述及使用

  • A:檔案名稱過濾器的概述
    • public String[] list(FilenameFilter filter)
    • public File[] listFiles(FileFilter filter)
  • B:檔案名稱過濾器的使用
    • 需求:判斷E盤目錄下是否有字尾名為.jpg的檔案,如果有,就輸出該檔案名稱
  • C:源碼分析
    • 帶檔案名稱過濾器的list()方法的源碼
  • D:案例示範
package heima_day19;
import java.io.File;
public class Demo8_File {
     public static void main(String[] args) {
           //String[] <u>arr</u> = dir.list(new filenameFileter() {
           //   @Override
                //   public boolean accept(File <u>dir</u>,String 
name) {
                     //return true;
                //}
           //});
     }
}