Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】
- 視頻+資料(工程源碼、筆記)【鏈接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg? ?提取碼:zjxs】
- Java基礎--學習筆記(零起點打開java世界的大門)--博客匯總表
???
目? ?錄
01_File類概述和構造方法
1.1、File類概述和構造方法
02_File類創建功能
1.2、File類創建功能
03_File類判斷和獲取功能
1.4、File類判斷和獲取功能
04_File類刪除功能
1.3、File類刪除文件
05_遞歸
1.5、遞歸
06_遞歸求階乘
案例:遞歸求階乘
07_遍歷目錄
案例:遍歷目錄
08_IO流概述和分類
2.1、IO流概述和分類
09_字節流寫數據
2.2、字節流寫數據
10_字節流寫輸入的三種方式
2.3、字節流寫數據的3種方式
11_字節流寫數據的兩個小問題
2.4、字節流寫數據的兩個小問題
1、字節流寫數據如何實現換行
2、字節流寫數據如何實現追加寫入
12_字節流寫數據加異常處理
2.5、字節流寫數據加異常處理
13_字節流讀數據(一次讀一個字節數據)
2.6、字節流讀數據(一次讀一個字節數據)
14_字節流復制文本文件
案例:復制文本文件
15_字節流讀數據(一次讀一個字節數組數據)
2.6、字節流讀數據(一次讀一個字節數組數據)
16_字節流復制圖片
案例:復制圖片
01_File類概述和構造方法
1.1、File類概述和構造方法
02_File類創建功能
1.2、File類創建功能
File類創建功能:
? ? public boolean createNewFile():當具有該名稱的文件不存在時,創建一個由該抽象路徑名命名的新空文件。
? ? ? ? 如果文件不存在,就創建文件,并返回true
? ? ? ? 如果文件存在,就不創建文件,并返回false
? ? public boolean mkdir():創建由此抽象路徑名命名的目錄。
? ? ? ? 如果目錄不存在,就創建目錄,并返回true
? ? ? ? 如果目錄存在,就不創建目錄,并返回false
? ? public boolean mkdirs():創建由此抽象路徑名命名的目錄,包括任何必需但不存在的父目錄。
? ? ? ? 如果目錄不存在,就創建目錄,并返回true
? ? ? ? 如果目錄存在,就不創建目錄,并返回false
?需要處理異常:?throws IOException
?文件創建成功
03_File類判斷和獲取功能
1.4、File類判斷和獲取功能
File類的判斷和獲取功能:
? 判斷功能
? ? public boolean isDirectory():測試此抽象路徑名表示的File是否為目錄
? ? public boolean isFile():測試此抽象路徑名表示的File是否為文件
? ? public boolean exists():測試此抽象路徑名表示的File是否存在
? 獲取功能
? ? public String getAbsolutePath():返回此抽象路徑名的絕對路徑名字符串
? ? public String getPath():將此抽象路徑名轉換為路徑名字符串
? ? public String getName():返回由此抽象路徑名表示的文件或目錄的名稱
? ? public String[] list():返回此抽象路徑名表示的目錄中的文件和目錄的名稱字符串數組
? ? public File[] listFiles():返回此抽象路徑名表示的目錄中的文件和目錄的File對象數組
04_File類刪除功能
1.3、File類刪除文件
File類刪除功能:
? ? public boolean delete():刪除由此抽象路徑名表示的文件或目錄
絕對路徑和相對路徑的區別
- 絕對路徑:完整的路徑名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt
- 相對路徑:必須使用取自其他路徑名的信息進行解釋。例如:myFile\java.txt
刪除目錄的注意事項:
如果一個目錄中有內容(目錄,文件),不能直接刪除。應該先刪除目錄中的內容,最后才能刪除目錄。
點擊 模塊,打開模塊所在的目錄:
? ??
? ?java01.txt文件,在myFile模塊目錄下。
創建文件前,需要創建目錄。?
05_遞歸
1.5、遞歸
老和尚給小和尚講故事,故事是:從前有座山,山里有個廟,廟里有個老和尚,老和尚給小和尚講故事,故事是...
遞歸概述:以編程的角度來看,遞歸指的是方法定義中調用方法本身的現象。
解決遞歸問題的思路:
把一個復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。
遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算。
遞歸解決問題要找到兩個內容:
- 遞歸出口:否則會出現內存溢出。
- 遞歸規則:與原問題相似的規櫝較小的問題。
06_遞歸求階乘
案例:遞歸求階乘
07_遍歷目錄
案例:遍歷目錄
08_IO流概述和分類
2.1、IO流概述和分類
IO流介紹(概述)
- IO:輸入/輸出(Input/Output)
- 流:是一種抽象概念,是對數據傳輸的總稱。也就是說數據在設備間的傳輸稱為流,流的本質是數據傳輸。
- IO流就是用來處理設備間數據傳輸問題的。
? ? ? 常見的應用:文件復制;文件上傳;文件下載
IO流的分類
- 按照數據的流向
? ? ? 輸入流:讀數據
? ? ? 輸出流:寫數據
- 按照數據類型來分
? ? ? 字節流
? ? ?? ? ? 字節輸入流;字節輸出流
? ? ? 字符流
? ? ?? ? ? 字符輸入流;字符輸出流
一般來說,我們說IO流的分類是按照數據類型來分的。那么這兩種流都在什么情況下使用呢?
- 如果數據通過Window自帶的記事本軟件打開,我們還可以讀懂里面的內容,就使用字符流,否則使用字節流。如果你不知道該使用哪種類型的流,就使用字節流!
IO流的使用場景
- 如果操作的是純文本文件,優先使用字符流
- 如果操作的是圖片、視頻、音頻等二進制文件。優先使用字節流
- 如果不確定文件類型,優先使用字節流。字節流是萬能的流?
? ?
09_字節流寫數據
2.2、字節流寫數據
字節流抽象基類
- InputStream:這個抽象類是表示字節輸入流的所有類的超類。
- OutputStream:這個抽象類是表示字節輸出流的所有類的超類。
- 子類名特點:子類名稱都是以其父類名作為子類名的后綴。
FileOutputStream:文件輸出流用于將數據寫入File(字節輸出流)
- FileOutputStream(String name):創建文件輸出流以指定的名稱寫入文件。
使用字節輸出流寫數據的步驟
FileOutputStream?(String name)?? ?創建文件輸出流以指定的名稱寫入文件。
10_字節流寫輸入的三種方式
2.3、字節流寫數據的3種方式
構造方法:
? ? FileOutputStream?(String name):創建文件輸出流以指定的名稱寫入文件
? ? FileOutputStream?(File file):創建文件輸出流以寫入由指定的 File對象表示的文件
11_字節流寫數據的兩個小問題
2.4、字節流寫數據的兩個小問題
字節流寫數據如何實現換行
- windows:\r\n
- linux:\n
- mac:\r
字節流寫數據如何實現追加寫入
- public FileOutputStream(String name,boolean append)
- 創建文件輸出流以指定的名稱寫入文件。如果第二個參數為true ,則字節將寫入文件的末尾而不是開頭。
1、字節流寫數據如何實現換行
2、字節流寫數據如何實現追加寫入
12_字節流寫數據加異常處理
2.5、字節流寫數據加異常處理
finally:在異常處理時提供finally塊來執行所有清除操作。比如說IO流中的釋放資源。
特點:被finally控制的語句一定會執行,除非JVM退出。
try {FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");fos.write("hello".getBytes());fos.close(); } catch (IOException e) {e.printStackTrace(); }13_字節流讀數據(一次讀一個字節數據)
2.6、字節流讀數據(一次讀一個字節數據)
需求:
把文件fos.txt中的內容讀取出來在控制臺輸出。
FileInputStream:從文件系統中的文件獲取輸入字節(字節輸入流)
FileInputStream(String name):通過打開與實際文件的連接來創建一個FileInputStream,該文件由文件系統中的路徑名name命名
字節輸入流 讀取數據的步驟:
14_字節流復制文本文件
案例:復制文本文件
15_字節流讀數據(一次讀一個字節數組數據)
2.6、字節流讀數據(一次讀一個字節數組數據)
需求:
把文件fos.txt中的內容讀取出來在控制臺輸出。
一次讀一個字節數組的方法:
- public int read(byte[] b):從輸入流讀取最多b.length個字節的數據
- 返回的是讀入緩沖區的總字節數,也就是實際的讀取字節個數
使用字節輸入流 讀數據的步驟:
String?(byte[] bytes, int offset, int length):通過使用平臺的默認字符集解碼指定的字節子陣列來構造新的String。
根據byte數組實際長度,構造字符串。如果byte數組的數組長度非常長,而實際讀取到的byte數組很短,會造成空間浪費。
16_字節流復制圖片
案例:復制圖片
?
總結
以上是生活随笔為你收集整理的Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java16-day07【Map(概述、
- 下一篇: Java18-day09【字节缓冲流、字