本文原始碼:GitHub·點這里 || GitEE·點這里
一、IO流分類
1、分類角度
流的方向
- 輸入流:從資料源中讀取資料到應用中的流;
- 輸出流:從應用中將資料寫入到目的地的流;
流資料型別
- 位元組流:以位元組形式來讀寫的流,標識是名稱以Stream結尾;
- 字符流:以字符形式來讀寫的流,標識是名稱以Writer、Reader結尾;
- 管道流:以資料塊為單位來處理,緩沖區就是用于讀寫的資料塊;
流的角色
- 節點流:可以從一個節點或者向一個節點讀/寫資料的流,也被稱為低級流;
- 處理流:對存在的流進行連接或者封裝、封裝后的流來進行讀/寫、也被稱為高級流,
2、API體系

5個核心類ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;
1關鍵介面:Serializable;
二、API細節分類
1、位元組輸入流

InputStream:位元組輸入流是所有位元組輸入流的父類、為所有位元組輸入流提供一個標準、和基本的與讀取位元組有關的方法及簡單的實作,
FileInputStream:檔案位元組輸入流以位元組的形式將檔案中資料讀取到應用中;
BufferedInputStream:緩沖位元組輸入流,提供緩沖功能,提高效率;
ByteArrayInputStream:位元組陣列輸入流用于讀取其內置快取位元組陣列中的位元組;
PipedInputStream:管道位元組輸入流必須與PipedOutputStream結合使用,用于執行緒之間的通信;
FilterInputStream:過濾器位元組輸入流,重寫InputStream方法,為位元組輸入處理流提供擴展;
DataInputStream:資料位元組輸入流,一般與DataOutputStream結合使用;
ObjectInputStream:物件位元組輸入流,與ObjectOutputStream結合使用;
2、位元組輸出流

OutputStream:位元組輸出流,InputStream作用一樣,為所有位元組輸出流提供一個標準、定義了一些基本輸出位元組的方法與簡單實作;
FileOutputStream:檔案位元組輸出流,將位元組寫入指定目標的檔案源中;
BufferedOutputStream:緩沖位元組輸出流,提供緩沖功能、提高效率;
ByteArrayOutputStream:位元組陣列輸出流,將位元組寫入到其本身所帶的一個內置快取位元組陣列中;
PipedoutputStream:管道位元組輸出流,必須與PipedInputStream結合使用、用于執行緒之間的通信;
FilterOutputStream:過濾位元組輸出流,為位元組輸出處理流提供擴展;
DataOutputStream: 資料位元組輸出流,一般與DataInputStream結合使用;
ObjectOutputStream:物件位元組輸出流,通常與ObjectInputStream結合使用;
PrintStream:位元組列印流,位元組輸出流進行裝飾、提供列印各種資料型別的功能;
3、字符輸入流

Reader:字符輸入流,為所有字符輸入流提供一個標準、只有基本的讀取方法的定義和簡單的實作;
InputStreamReader:位元組轉換流,將位元組流轉換成字符流,并且可以指定位元組轉成字符時使用的編碼;
BufferedReader:緩沖字符輸入流,為字符輸入流提供緩沖功能、提高效率;
CharArrayReader:字符陣列輸入流,將其內置字符快取陣列中的資料讀取到應用中;
PipedReader:管道字符輸入流,與PipedWriter結合使用、用于執行緒之間的通信;
FilterReader:過濾字符輸入流,為字符輸入流提供擴展;
FileReader:檔案字符輸入流,字符的形式讀取檔案中的內容;
4、字符輸出流

Writer:字符輸出流,所有字符輸出流提供一個標準,基本寫入的方法和簡單的實作;
OutputStreamWriter:位元組輸出轉換流,用于將位元組輸出流轉化成字符輸出流,可以指定編碼轉化;
BufferedWriter:快取字符輸出流,提供緩沖功能、提高效率;
CharArrayWriter:字符輸出流,用于將字符寫入其內置快取字符陣列中;
PipedWriter:管道字符輸出流,與PipedReader結合使用,用于執行緒之間的通信;
FileWriter:檔案字符輸出流,用于將字符寫入到指定檔案中;
PrintWriter:字符列印流,將各種資料以字符的形式列印;
三、File檔案類
1、構造方法
File(String pathname):指定檔案或者檔案夾的路徑創建一個File檔案;
File(File parent,String child):根據parent抽象路徑名和child路徑名字符創建新的File實體;
2、路徑問題
絕對路徑:該檔案在硬碟上的完整路徑,絕對路徑一般都是以盤符開頭的,
相對路徑: 相對路徑就是資源檔案相對于當前程式所在的路徑,
. 當前路徑
.. 上一級路徑
3、檔案的創建
createNewFile():在指定位置創建一個空檔案,成功回傳true,已存在就不創建然后回傳false;
mkdir():在指定位置創建目錄,這只會創建最后一級目錄,上級目錄不存在就拋例外;
mkdirs():在指定位置創建目錄,這會創建路徑中所有不存在的目錄;
4、洗掉檔案
delete() 洗掉檔案或者一個空的檔案夾,如果檔案夾且不為空,則不能洗掉,成功回傳true,失敗回傳false;
5、判斷方法
exists():檔案或檔案夾是否存在;
isFile():是否是一個檔案,如果不存在,則始終為false;
isDirectory():是否是一個目錄,如果不存在,則始終是false;
6、獲取檔案資訊
getName():獲取檔案或檔案夾名稱,不包含上級路徑;
getPath():回傳絕對路徑,可以是相對路徑,但是目錄要指定
四、編碼解碼


位元組流讀取的是檔案中的二進制資料,不會自動轉為可以看懂的字符;字符流:把讀到的資料進行對應的編碼與解碼,
五、源代碼地址
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile
推薦閱讀:編程體系整理
| 序號 | 專案名稱 | GitHub地址 | GitEE地址 | 推薦指數 |
|---|---|---|---|---|
| 01 | Java描述設計模式,演算法,資料結構 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 02 | Java基礎、并發、面向物件、Web開發 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 03 | SpringCloud微服務基礎組件案例詳解 | GitHub·點這里 | GitEE·點這里 | ☆☆☆ |
| 04 | SpringCloud微服務架構實戰綜合案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基礎應用入門到進階 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合開發常用中間件 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 07 | 資料管理、分布式、架構設計基礎案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 08 | 大資料系列、存盤、組件、計算等框架 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134892.html
標籤:其他
上一篇:Python函式詳解
