JAVA語言基礎-面向對象(IO:File)

19.14_File類(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:案例演示
    • File類的構造方法

    

package com.heima.file;

import java.io.File;


public class Demo1_File {

	/**
	 * File(String pathname):根據一個路徑獲得File對象
	 * File(String parent, String child):根據一個目錄和一個子文件/目錄獲得File對象
	 * File(File parent, String child):根據一個父File對象和一個子文件/目錄獲得File對象
	 */
	public static void main(String[] args) {
		//demo1();
		//demo2();
		File parent = new File("F:\\雙元課堂\\day19\\video");
		String child = "001_今日內容.avi";
		File file = new File(parent, child);
		System.out.println(file.exists());
		System.out.println(parent.exists());
	}

	public static void demo2() {
		String parent = "F:\\雙元課堂\\day19\\video";
		String child = "001_今日內容.avi";
		File file = new File(parent,child);
		System.out.println(file.exists());
	}

	public static void demo1() {
		File file = new File("F:\\雙元課堂\\day19\\video\\001_今日內容.avi");
		System.out.println(file.exists());
		
		File file2 = new File("xxx.txt");
		System.out.println(file2.exists());
		
		File file3 = new File("yyy.txt");
		System.out.println(file3.exists());
	}

}

19.15_File類(File類的建立功能)

  • A:建立功能
    • public boolean createNewFile():建立文件 若是存在這樣的文件,就不建立了
    • public boolean mkdir():建立文件夾 若是存在這樣的文件夾,就不建立了
    • public boolean mkdirs():建立文件夾,若是父文件夾不存在,會幫你建立出來
  • B:案例演示java

    • File類的建立功能編程

    • 注意事項:windows

      • 若是你建立文件或者文件夾忘了寫盤符路徑,那麼,默認在項目路徑下。

    

package com.heima.file;

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

public class Demo2_FileMethod {

	public static void main(String[] args) throws IOException {
		//demo1();
		File dir1 = new File("aaa");
		System.out.println(dir1.mkdir());
		
		File dir2 = new File("bbb.txt");				//這樣寫是能夠的,文件夾也是能夠有後綴的
		System.out.println(dir2.mkdir());
		
		File dir3 = new File("ccc\\ddd");
		System.out.println(dir3.mkdirs()); 				//建立多級目錄
	}

	public static void demo1() throws IOException {
		File file = new File("yyy.txt");
		System.out.println(file.createNewFile());			//若是沒有就建立,返回true
		
		File file2 = new File("zzz");
		System.out.println(file2.createNewFile());
	}

}

19.16_File類(File類的重命名和刪除功能)

  • A:重命名和刪除功能
    • public boolean renameTo(File dest):把文件重命名爲指定的文件路徑
    • public boolean delete():刪除文件或者文件夾
  • B:重命名注意事項
    • 若是路徑名相同,就是更名。
    • 若是路徑名不一樣,就是更名並剪切。
  • C:刪除注意事項:
    • Java中的刪除不走回收站。
    • 要刪除一個文件夾,請注意該文件夾內不能包含文件或者文件夾

    

package com.heima.file;

import java.io.File;

public class Demo3_FileMethod {

	
	public static void main(String[] args) {
		//demo1();
		File file1 = new File("yyy.txt");
		System.out.println(file1.delete());
		
		File file2 = new File("aaa");
		System.out.println(file2.delete());
		
		File file3 = new File("ccc");					//若是刪除一個文件夾,那麼文件夾必須是空的
		System.out.println(file3.delete());
	}

	public static void demo1() {
		File file1 = new File("ooo.txt");
		File file2 = new File("D:\\xxx.txt");
		System.out.println(file1.renameTo(file2));
	}

}

19.17_File類(File類的判斷功能)

  • A:判斷功能
    • public boolean isDirectory():判斷是不是目錄
    • public boolean isFile():判斷是不是文件
    • public boolean exists():判斷是否存在
    • public boolean canRead():判斷是否可讀
    • public boolean canWrite():判斷是否可寫
    • public boolean isHidden():判斷是否隱藏
  • B:案例演示
    • File類的判斷功能

    

package com.heima.file;

import java.io.File;

public class Demo4_FileMethod {

	/**
	案例演示
		* File類的判斷功能
	 */
	public static void main(String[] args) {
		//demo1();
		File file = new File("zzz");
		file.setReadable(false);
		System.out.println(file.canRead()); 			//windows系統認爲全部的文件都是可讀的
		file.setWritable(true);
		System.out.println(file.canWrite()); 			//windows系統能夠設置爲不可寫
		
		File file2 = new File("aaa.txt");
		System.out.println(file2.isHidden());			//判斷是不是隱藏文件
		System.out.println(file.isHidden());
	}

	public static void demo1() {
		File dir1 = new File("ccc");
		System.out.println(dir1.isDirectory());			//判斷是不是文件夾
		
		File dir2 = new File("zzz");
		System.out.println(dir2.isDirectory());
		
		System.out.println(dir1.isFile());				//判斷是不是文件
		System.out.println(dir2.isFile());
	}

}

19.18_File類(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:案例演示
    • File類的獲取功能

    

package com.heima.file;

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

public class Demo5_FileMethod {

	/**
	 * * A:獲取功能
		* public String getAbsolutePath():獲取絕對路徑
		* public String getPath():獲取路徑
		* public String getName():獲取名稱
		* public long length():獲取長度。字節數
		* public long lastModified():獲取最後一次的修改時間,毫秒值
		* public String[] list():獲取指定目錄下的全部文件或者文件夾的名稱數組
		* public File[] listFiles():獲取指定目錄下的全部文件或者文件夾的File數組 
	 */
	public static void main(String[] args) {
		//demo1();
		File dir = new File("F:/雙元課堂/day19/video");
		String[] arr = dir.list();						//僅爲了獲取文件名
		
		for (String string : arr) {
			System.out.println(string);
		}
		
		File[] subFiles = dir.listFiles();
		
		for (File file : subFiles) {					//獲取文件對象
			System.out.println(file);
		}
 	}

	public static void demo1() {
		File file1 = new File("ccc.txt");
		File file2 = new File("D:\\雙元課堂\\day19\\ccc.txt");
		//System.out.println(file1.getAbsolutePath());			//獲取絕對路徑
		//System.out.println(file2.getAbsolutePath());
		
		//System.out.println(file1.getPath());					//獲取構造方法中傳入路徑
		//System.out.println(file2.getPath());
		
//		System.out.println(file1.getName());					//獲取文件或者文件的名字
//		System.out.println(file2.getName());
//		
//		System.out.println(file1.length());
		
		Date d = new Date(file1.lastModified());				//文件的最後修改時間
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		System.out.println(sdf.format(d));
	}

}

19.19_File類(輸出指定目錄下指定後綴的文件名)

  • A:案例演示
    • 需求:判斷E盤目錄下是否有後綴名爲.jpg的文件,若是有,就輸出該文件名稱

    

package com.heima.test;

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

public class Test3 {

	/**
	 * @param args
	 * * A:案例演示
	 * 需求:判斷E盤目錄下是否有後綴名爲.jpg的文件,若是有,就輸出該文件名稱
	 */
	public static void main(String[] args) {
		File dir = new File("E:\\");
		
//		String[] arr = dir.list();					//獲取e盤下全部的文件或文件夾
//		for (String string : arr) {
//			if(string.endsWith(".jpg")) {
//				System.out.println(string);
//			}
//		}
		
		/*File[] subFiles = dir.listFiles();			//獲取e盤下全部的文件或文件夾對象
		
		for (File subFile : subFiles) {
			if(subFile.isFile() && subFile.getName().endsWith(".jpg")) {
				System.out.println(subFile);
			}
		}*/
		
		String[] arr = dir.list(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				//System.out.println(dir);
				//System.out.println(name);
				File file = new File(dir, name);
				return file.isFile() && file.getName().endsWith(".jpg");
			}
		});
		
		for (String string : arr) {
			System.out.println(string);
		}
	}

}

19.20_File類(文件名稱過濾器的概述及使用)

  • A:文件名稱過濾器的概述
    • public String[] list(FilenameFilter filter)
    • public File[] listFiles(FileFilter filter)
  • B:文件名稱過濾器的使用
    • 需求:判斷E盤目錄下是否有後綴名爲.jpg的文件,若是有,就輸出該文件名稱
  • C:源碼分析
    • 帶文件名稱過濾器的list()方法的源碼
一、本身設計1-2個需求,並完成該需求!需求中應儘量包含File類的建立、判斷、刪除、獲取!
課後由導師隨機抽查!
二、使用文件過濾器篩選將指定文件夾下的小於200K的小文件,並打印!
package cn.itcast;

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

/*
 * 需求:二、使用文件過濾器篩選將指定文件夾下的小於200K的小文件,並打印!
 */
public class homework2 {
	public static void main(String[] args) {
		File file = new File("A");
		String names[] = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				File newFile = new File(dir, name);
				// 在一些時候咱們不能等着程序給咱們顯示結果,而是在編程的過程當中,也要對一些細節進行檢驗,以下一步就是爲了確保獲得單位爲k的文件的數據大小
				// System.out.println(newFile.length()/1024);
				return (newFile.length() / 1024 < 200) ? true : false;
			}
		});

		for (String name : names) {
			System.out.println(name);
		}
	}
}
相關文章
相關標籤/搜索