1. 程式人生 > >【JavaSE學習筆記】IO流01_File

【JavaSE學習筆記】IO流01_File

IO流01

File

1)概述

要學習IO流,就必須掌握硬碟上的路徑形式

Java提供了一個File類

檔案和目錄路徑名的抽象表示形式

2)構造方法

public File(String pathname):將該路徑名稱封裝成了一個File例項

File(String parent, String child):將父資料夾或者目錄裡面的child檔案封裝成一個File例項(不常用)

FIle(File parent, String child):引數一:表示封裝了File物件,該資料夾下的檔案

import java.io.File;

public class Demo01 {
	public static void main(String[] args) {
		// 需求:封裝e盤下的demo檔案下面的a.txt檔案:抽象表示
		File file1 = new File("E:\\demo\\a.txt");// 推薦使用

		File file2 = new File("E:\\demo", "a.txt");

		File file3 = new File("E:\\demo");
		File file4 = new File(file3, "a.txt");
	}
}

3)成員方法

public boolean createNewFile():表示建立檔案,如果該檔案存在,就不需要建立

public boolean mkdir():建立資料夾/目錄,如果存在,就不需要建立

public boolean mkdirs():建立資料夾/目錄,如果存在,就不需要建立(常用

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

public class Demo02 {
	public static void main(String[] args) {
		// 需求:在e盤下建立一個demo資料夾
		File file1 = new File("E:\\demo");
		// 如果沒有,建立並返回true;如果資料夾存在,不用建立,返回false
		System.out.println("mkdir:" + file1.mkdir());

		// 需求:在e盤下demo資料夾下建立a.txt檔案
		File file2 = new File("E:\\demo\\a.txt");
		try {
			// 如果沒有,建立並返回true;如果檔案存在,不用建立,返回false
			System.out.println("createNewFile:" + file2.createNewFile());
		} catch (IOException e) {// IOException:編譯時期異常
			e.printStackTrace();
		}

		// 需求:在e盤下test資料夾下建立a.txt檔案
		File file3 = new File("E:\\test\\a.txt");
		try {
			// 異常:系統找不到指定的路徑。在E盤下找不到這個test
			System.out.println("createNewFile:" + file3.createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 建立資料夾/目錄,如果不存在該目錄,就建立!返回true
		File file4 = new File("e:\\test\\aaa\\bbb\\ccc\\ddd");
		System.out.println("mkdirs:" + file4.mkdirs());
	}
}

如果我們在寫路徑的時候,沒有帶碟符,那麼預設是在你當前專案路徑下!

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

public class Demo04 {
	public static void main(String[] args) {

		// 如果我們在寫路徑的時候,沒有帶碟符,那麼預設是在你當前工程專案路徑下!
		// 執行完重新整理下工程
		File file1 = new File("a.txt");
		try {
			System.out.println("createNewFile:" + file1.createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}

		File file2 = new File("aaa\\bbb\\ccc\\ddd");
		System.out.println("mkdirs:" + file2.mkdirs());
		
	}
}

重新整理下工程


public boolean delete():刪除此抽象路徑名錶示的檔案或目錄

import java.io.File;

public class Demo05 {
	public static void main(String[] args) {
		// 需求:刪除aaa這個目錄
		File file1 = new File("aaa\\bbb\\ccc\\ddd");
		// 不能刪除帶有內容的檔案,只能逐個刪除
		System.out.println("delete:" + file1.delete());
		
		File file2 = new File("aaa\\bbb\\ccc");
		System.out.println("delete:" + file2.delete());
	}
}


注意:java中的刪除不走回收站;

delete不能刪除該資料夾下有檔案或者是資料夾的檔案,只能刪除空資料夾

public boolean renameTo(File dest):重新命名

兩個檔案的路徑一致的情況下:只是改名字

兩個檔案的路徑不一致的情況下:不但改名,並且剪下(當前的碟符路徑下)

import java.io.File;

public class Demo06 {
	public static void main(String[] args) {
		File file1 = new File("a.txt");

		File file2 = new File("b.txt");

		// 只該名稱
		System.out.println("renameTo:" + file1.renameTo(file2));

		File file3 = new File("E:\\c.txt");

		// 改名並剪下到E:\\目錄下
		System.out.println("renameTo:" + file2.renameTo(file3));
	}
}

4)判斷功能

public boolean isAbsolute:判斷該路徑是否是絕對路徑(帶碟符)

public boolean isFile():判斷此檔案是否為一個標準檔案

public boolean isHidden():判斷此抽象路徑表示的檔案是否是一個隱藏檔案

public boolean canRean():可讀

public boolean canWrite():可寫

import java.io.File;

public class Demo07 {
	public static void main(String[] args) {
		File file = new File("a.txt");// 相對路徑(在工程目錄下)

		System.out.println("isAbsolute:" + file.isAbsolute());// false
		System.out.println("isFile:" + file.isFile());// true
		System.out.println("isHidden:" + file.isHidden());// false
		System.out.println("canRead:" + file.canRead());// true
		System.out.println("canWrite:" + file.canWrite());// true
	}
}

5)獲取功能

public String getAbsolutePath():獲取絕對路徑

public String getPath():獲取相對路徑

public String getName():獲取檔案或者目錄的名稱

public long length():獲取檔案的長度

public long lastModified():返回次抽象路徑檔案最後一次被修改的時間,返回的修改時間的一個毫秒值

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

public class Demo03 {
	public static void main(String[] args) {
		File file1 = new File("a.txt");// "\\" 代表"\"

		System.out.println("getAbsolutePath:" + file1.getAbsolutePath()); // getAbsolutePath:F:\JAVA\JavaSE\a.txt

		System.out.println("getPath:" + file1.getPath());// getPath:a.txt

		System.out.println("getName:" + file1.getName());// getName:a.txt

		// 沒寫資料,長度為0
		System.out.println("length:" + file1.length());// length:0

		// 最後一次修改的毫秒值
		System.out.println("lastModified:" + file1.lastModified());// lastModified:1502333228415

		// 轉化為時間
		Date d = new Date(1502333228415L);// long型別要加L
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String s = sdf.format(d);
		System.out.println(s);// 2017-08-10 10:47:08
	}
}

6)高階功能

public String[] list():獲取制定碟符下的所有檔案以及資料夾的名稱陣列

import java.io.File;

public class Demo08 {
	public static void main(String[] args) {
		// 需求:要獲取e盤下所有的檔案以及資料夾名稱
		// 將e盤的路徑表現形式封裝成一個File物件
		File file = new File("E:\\");
		
		String[] str = file.list();
		//遍歷
		for (String s : str) {
			System.out.println(s);
		}
	}
}

public File[] listFiles():獲取指定碟符下的所有檔案以及資料夾的File物件陣列(常用)

import java.io.File;

public class Demo09 {
	public static void main(String[] args) {
		// 需求:要獲取e盤下所有的檔案以及資料夾名稱
		// 將e盤的路徑表現形式封裝成一個File物件
		File file = new File("E:\\");
		
		// 檔案物件陣列
		File[] fileArr = file.listFiles();
		// 是物件就要非空判斷
		if (fileArr != null) {
			for (File f : fileArr) {
				// 直接輸出f為全路徑名稱
				System.out.println(f.getName());
			}
		}
	}
}

7)練習

判斷E盤目錄下是否有後綴名為.jpg的檔案,如果有,就輸出此檔名稱

分析

a.將e盤封裝成一個File物件

b.獲取當前碟符下的所有的資料夾以及檔案的File陣列listFiles()

c.遍歷之前,給File陣列物件做一個非空判斷,使用增強for遍歷

d.獲取到每一個檔案以及資料夾

判斷
是否是檔案:isFile()

是否是以.jpg結尾的字尾名的檔案,endWith(".jpg")
否:不搭理

e.輸出就可以

import java.io.File;

public class Demo10 {
	public static void main(String[] args) {
		File file = new File("E:\\");

		File[] fileArray = file.listFiles();

		// 非空判斷
		if (fileArray != null) {
			// 遍歷
			for (File f : fileArray) {
				// 判斷是否是檔案
				if (f.isFile()) {
					// 判斷是否以.jpg結尾
					if (f.getName().endsWith(".jpg")) {
						System.out.println(f.getName());
					}
				}
			}
		}
	}
}

8)檔案過濾器

上一題中:當我們獲取的時候,就已經有結果

要想實現這樣一樣結果,就必須學習一個介面:FilenameFileter

public File[] listFiles(FileFilter filter)

public String[] list(FilenameFiter fiter):(這個常用)

形式引數如果是一個介面物件:其實需要傳遞的是子實現類物件/匿名內部類

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

public class Demo11 {
	public static void main(String[] args) {
		File file = new File("E:\\");
		
		String[] strArray = file.list(new FilenameFilter() {
			
			@Override
			//File dir: 指定的檔案
			//name: 檔名稱列表
			public boolean accept(File dir, String name) {
				// File f = new File(dir, name);
				// // 是否是檔案
				// boolean flag1 = f.isFile();
				// // 是否以.jpg結尾
				// boolean flag2 = name.endsWith(".jpg");
				// return flag1 && flag2;
				
				//匿名物件
				return new File(dir, name).isFile() && name.endsWith(".jpg");
			}
		});
		
		//遍歷
		for (String s : strArray) {
			System.out.println(s);
		}
	}
}

相關推薦

JavaSE學習筆記IO01_File

IO流01 File 1)概述 要學習IO流,就必須掌握硬碟上的路徑形式 Java提供了一個File類 檔案和目錄路徑名的抽象表示形式 2)構造方法

JavaSE學習筆記IO02_位元組輸出OutputStream、位元組輸入InputStream

IO流02 概述 1)IO流:裝置和裝置之間的傳輸(讀寫) 2)分類 按流的方向分為: 輸入流   --->讀取資料 輸出流   --->寫出資料 按資料

Java筆記IO中四種檔案複製方式效率比較

位元組流檔案複製方式: (1)位元組流讀寫單個位元組 (2)位元組流讀寫位元組陣列 (3)位元組緩衝流讀寫單個位元組 (4)位元組緩衝流讀寫位元組陣列 import java.io.BufferedInputStream; import java.io.BufferedOutpu

Java筆記IO中檔案複製及異常處理

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Main

ReactJs學習筆記狀態和生命週期+單向資料理解

目錄 生命週期 理解 方法 //建構函式 constructor(props) { super(props); this.state = {date: new Date()}; } //生命週期的方法(此處按

JAVAWEB學習筆記12_Http&Tomcat

請求重定向 san res tor tomcat啟動 zha rac pac b- 一、Http協議 1.什麽是Http協議 HTTP,超文本傳輸協議(HyperText Transfer Protocol)是互聯網上應用最為廣泛的 一種網絡協議。所有的WWW文

extjs6學習筆記1.1 初始:創建項目

workspace 學習 分享 pps cnblogs log -i 學習筆記 apps 創建工作空間 sencha generate workspace /path/to/workspace 使用sencha創建應用 sencha

extjs6學習筆記1.2 初始:MVC MVVM

控制 進行 nbsp 例如 ges 如果 image 初始 互動 模型 這表示數據層。該模型可以包含數據驗證和邏輯來保持數據。在 ext js 中, 大多數模型都與一個數據存儲一起使用。 視圖 這表示用戶界面。 是用戶在屏幕上看到的組

JAVAWEB學習筆記13_servlet

eight 生命周期 sys blog source con 相對 對象創建 功能 JavaWeb核心之Servlet 教學導航 學習目標: 案例一、完成用戶登錄功能 案例二、記錄成功登錄系統的人次 一、Servlet簡介 1.什麽是Servlet Servlet

JAVAWEB學習筆記16_session&cookie

發送 學習筆記 獲得 tab esp http 應用 區分 pac 會話技術Cookie&Session 學習目標 案例一、記錄用戶的上次訪問時間---cookie 案例二、實現驗證碼的校驗----session 一、會話技術簡介 1.存儲客

JAVAWEB學習筆記23_Listener和郵箱服務器

添加 .get 接收 監聽 lin 感知 一個 rate 包括 監聽器Listener 學習目標 案例-使用監聽器完成定時生日祝福 一、監聽器Listener javaEE包括13門規範 在課程中主要學習 servlet技術 和 jsp技術 其中

extjs6學習筆記0.1 準備:基礎概念(02)

json over cal 類的屬性 tab 常用事件 data 微軟 基於 Ext 類 Ext 是一個全局單例的對象,在 Sencha library 中它封裝了所有的類和許多實用的方法。許多常用的函數都定義在 Ext 對象裏。它還提供了像其他類中一些頻繁使用的方法

extjs6學習筆記1.7 初始:加載第三方庫

sum pro eve owa spec expect mapview cap ply https://www.sencha.com/blog/integrating-ext-js-with-3rd-party-libraries-2/ Introduction

JAVAWEB學習筆記22

ont 交換 開發 異步校驗 什麽是 zhang add 一個 url Js原生Ajax和Jquery的Ajax 學習目標 案例1-異步校驗用戶名是否存在 案例2-站內查詢 一、Ajax概述 1.什麽是同步,什麽是異步 同步現象:客戶端發送請

JAVAWEB學習筆記17

lose 常用屬性 註釋 作用 enter tps img 客戶 mage 動態頁面技術(JSP/EL/JSTL) 學習目標 案例:完成商品的列表的展示 一、JSP技術 1.jsp腳本和註釋 jsp腳本: 1)<%java代碼%> -

extjs6學習筆記1.9 初始: Mixins

另一個 筆記 extjs 微軟 mage extjs6 名稱 img pan Mixin允許我們使用一個類的函數作為另一個類的函數而不繼承。 Mixins可以使用mixins關鍵字定義,並將值指定為JSON對象,其中屬性的名稱應該是要使用的方法的名稱,屬性的值

JAVAWEB學習筆記09

like 筆記 關聯關系 server enc put logs 問題 dir 今天晨讀單詞: order:訂單constraint:(強制)約束foreign key:外鍵references:指向orderitem:訂單項join:加入resourceBundle:資源

JAVAWEB學習筆記04

文件 使用 ava back move 比較 nload 索引 方式 晨讀單詞: onmouseover:鼠標移入 onmouseout:鼠標移出 attribute:屬性 node:節點 document:文檔 element:元素 textNode:文本節點 appen

JAVAWEB學習筆記01

顏色 col 文本 鏈接 target sel nbsp html標簽 劃線 案例一:網站信息顯示頁面1.什麽是HTML?(Hyper Text Markup Language:超文本標記語言)超文本:功能比普通文本更加強大標記語言:使用一組標簽對內容進行描述的一門語言(它

JAVAWEB學習筆記23

clear 定時 tab 都沒有 cal subject 優化 select 再次 監聽器Listener 學習目標 案例-使用監聽器完成定時生日祝福 一、監聽器Listener javaEE包括13門規範 在課程中主要學習 servlet技術