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