一.File,IO流概述
二.File文件
1.File文件對象的創建
(路徑:
)
2.常用方法1:判斷文件類型、獲取文件信息
(注意:
)
3.常用方法2:創建文件、刪除文件
(creatNewFile()會爆紅 alt+回車處理異常就好了。如果創建成功會返回true)
4.常用方法3:遍歷文件夾
當需要進行文件搜索(不僅僅在一級文件中時 利用到方法遞歸 如下)
案例:改變某個文件夾下視頻的序號,要求從19開始
indexOf("、")
:找到字符串?name
?中第一個?、
?的位置(索引值)。有則返回位置 無則返回-1substring(0, index)
:提取分隔符(不包含?、
)之前的部分。substring(index)
:提取分隔符及之后的部分。
三.前置知識:方法遞歸
1.認識遞歸的形式
2.應用、執行流程、算法思想
1.案例-計算n的階乘
2.遞歸算法三要素
3.案例-猴子吃桃
3.其他應用:文件搜索-非空文件夾刪除-啤酒問題
四.前置知識:字符集
1.常見字符集介紹
(
)
2.字符集的編碼、解碼操作
,
五.IO流-字節流
1.IO流的分類、體系
2.每個IO流的作用、用法
1.文件字節輸入流:每次讀取一個字節
當文件已經沒有數據可讀 會返回-1
當文件內容特別多時 需要利用循環(缺點:讀取性能很差,讀取漢字會亂碼):
流使用完后必須關閉,釋放系統資源!
2.文件字節輸入流:每次讀取多個字節
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第一次讀取時,讀取了前3個字節,對應的字符是?abc,
文件中剩下的內容是?66
,但?buffer
?的長度是3,所以只會讀取2個字節(66
),覆蓋掉ab,第三個字節仍然是第一次讀取后殘留的值c
為了避免這種情況的出現:
代碼優化(利用循環)
3.文件字節輸入流:一次讀取完全部字節
(1)?方式一
()
(2)方式二
()
4.文件字節輸出流:寫字節出去
不用提前創建測試文件 代碼運行后會自動創建
第二次運行是在第一次運行結果后再次加入測試abd
換行!!!
5.案例:文件復制
六.IO流-資源釋放的方式
1.try-catch-finally
注意:!一定不能在finally中返回數據
try
?塊:嘗試執行?return a / b;
。如果?b
?為 0,這里會拋出?ArithmeticException
?異常。catch
?塊:- 如果?
try
?塊中拋出異常,會進入?catch
?塊。 e.printStackTrace();
?用于打印異常的堆棧跟蹤信息,幫助調試。return -1;
?表示如果出現異常,方法返回 -1。
- 如果?
finally
?塊:- 無論?
try
?塊是否拋出異常,也無論?catch
?塊是否執行,finally
?塊都會執行。 finally
?塊中的?return 111;
?會覆蓋?try
?或?catch
?塊中的?return
?值。
- 無論?
做法:選中后 Ctrl+alt+t
此時需要在括號外定義is os:
此時,有可能擔心在is,os賦值前會有異常,導致空指針異常或在try模塊里已經進行close,需要對于finally這兩行代碼判空后再次try-catch:
2.try-with-resource
try-catch-finally代碼較為臃腫
注意:這里只能放置資源對象(流對象),而不能放置普通變量。
(資源都會實現Autocloseable接口,都會有一個close方法,并且資源放到這里后用完之后,會被自動調用其close方法完成資源的釋放操作。)