【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學習筆記】IO流01_File
IO流01 File 1)概述 要學習IO流,就必須掌握硬碟上的路徑形式 Java提供了一個File類 檔案和目錄路徑名的抽象表示形式 2)構造方法
【JavaSE學習筆記】IO流02_位元組輸出流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技術