Java全面解析IO流相關知識
IO流相關知識(File,字節(jié)流,字符流,特殊操作流(標準輸入流,標準輸出流,對象序列化與反序列化,properties與IO流結合))相關知識總結
前言
流是一種抽象概念,它代表了數(shù)據(jù)的無結構化傳遞。按照流的方式進行輸入輸出,數(shù)據(jù)被當成無結構的字節(jié)序或字符序列。從流中取得數(shù)據(jù)的操作稱為提取操作,而向流中添加數(shù)據(jù)的操作稱為插入操作。用來進行輸入輸出操作的流就稱為IO流。換句話說,IO流就是以流的方式進行輸入輸出
一、File
1.File類的概述和構造方法
通過如上的圖相信對文件打的相關應用已經有了初步的認識,因為封裝的不是真正存在的文件,僅僅是一個路徑名而已,所以沒有那個路徑的文件也可以寫,不會報錯,將來是把不存在的轉換為具體存在的。
2.File類創(chuàng)建功能
這里需要注意的是:不能根據(jù)目錄來判斷是創(chuàng)建的文件還是目錄,而是通過調用的方法來判斷的,路徑那個只是名字而已,文件和目錄的名字也不能是一樣的
3.File類判斷和獲取功能
4.File類刪除功能
注意:File的相關操作與字節(jié)流沒有繼承的關系,所以要刪除文件的話還是的用File的刪除功能才可
二、字節(jié)流
1.IO流的概述和分類
概述
分類
2.字節(jié)流寫數(shù)據(jù)
記得一定要釋放資源
3.字節(jié)流寫數(shù)據(jù)的兩個小問題
字節(jié)流寫數(shù)據(jù)如何換行
不同的操作系統(tǒng)的換行是不一樣的
字節(jié)流寫數(shù)據(jù)如何實現(xiàn)追加寫入
值得注意的是是在文件的后面添加,而原來的數(shù)據(jù)還是有的,所以在用的時候就要考慮一下是怎樣使用自己的文件的
4.字節(jié)流寫入數(shù)據(jù)假異常處理
就是簡單的異常處理而已,如果不使用處理的話就拋出就可以了
5.字節(jié)流讀數(shù)據(jù)(重點)
一次讀一個字節(jié)的數(shù)據(jù)
標準的代碼格式就是這樣的
一次讀一個數(shù)組的數(shù)據(jù)
字節(jié)流讀數(shù)據(jù)其實很簡單,這里需要注意的是字節(jié)流讀數(shù)據(jù)的話可以有兩種方法,至于使用怎樣的方法就得取決于自己得使用就行了
6.字節(jié)緩沖流
7.如何選擇怎樣得數(shù)據(jù)讀取呢?
從圖中可以看出字節(jié)緩沖流得讀取比基本得字節(jié)讀取要快很多,如果要節(jié)省時間得話就可以考慮用字節(jié)緩沖流來進行字節(jié)流得讀取
三、字符流
1.為什么會出現(xiàn)字符流?
所以他的底層操作的實質還是字節(jié)流
編碼表
這里需要注意的是用的什么編碼就必須用對應的解碼,否則就會出現(xiàn)亂碼的情況
2.字符串中的編碼解碼問題
3.如何實現(xiàn)解決編譯解碼的問題
其實寫的時候是寫在了緩沖區(qū),并沒寫在文件里,可以刷新,也可以關閉流它會自動的刷新
代碼理解
4.字符流寫數(shù)據(jù)的方法
5.字符流讀數(shù)據(jù)的方法
字節(jié)流與字符流的讀數(shù)據(jù)的思想是一樣的只不過一個是字符,一個是字節(jié)而已
6.字符流復制文件
其方法和字節(jié)流的方法一樣,只是一個是字節(jié)一個是字符而已
方法一:一個一個的字符進行的復制
方法二:一個字符數(shù)組一個字符數(shù)組的復制
準換流
OutputStreamWriter 他又一個子類是:FileWriter
InputStreamReader 它有一個子類是: FileReader
我們在復制文件等相關操作的時候可以用他的子類進行操作,書寫更加的簡單,但是,在進行編碼問題解決的時候還是得用轉換流才可以
7.字符緩沖流
字符緩沖流的特有功能
那么可以做什么呢?
我們可以通過其中特有的功能進行文件的復制等
需要注意的是readline只是讀的是內容,不讀其他的
8.字節(jié),字符流小結
(此時有個使用的問題就是用哪兒文件的讀取就寫哪兒,寫在一起容易出問題,還有就是一定要釋放資源)
字節(jié)流
字符流
關于亂碼的問題
個人認為出現(xiàn)亂碼是因為如果用的是字節(jié)流的話用char來強制轉換顯示的話就是只有其中的一部分并沒有把一個漢字的那個文字表達組如(【-1,23,36】)表達完整,但是如果用new String()來顯示的話會表達完整(可能是里面有相應的方法,具體不清楚,知道就行了),如果用的是字符流的話就是用的默認的編碼以及你相應要求的編碼來表達,所以就不會出現(xiàn)亂碼的問題了
9.復制文件的異常處理
四、特殊操作流
1.標準輸入流
2.標準輸出流
3.打印流
字節(jié)打印流
字符打印流
4.對象序列化流與對象反序列化流(它是基于字節(jié)流上的)
對象序列化流
對象反序列化流
5.解決對象序列化流的三個問題
6.Properties
代碼理解(properties作為map集合的使用)
properties作為集合特有的方法
第一個是寫數(shù)據(jù)進入集合
第二個是根據(jù)鍵得到值
第三個是得到鍵得集合
Properties和IO流結合的方法
集合數(shù)據(jù)寫到文件
文件寫到集合
總結
IO流其實很簡單,重點是要掌握其中的字節(jié)流讀寫方法,以及字符流的讀寫方法和Properties與IO流結合的進行使用。
到此這篇關于Java全面解析IO流相關知識的文章就介紹到這了,更多相關Java IO流內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring整合Quartz實現(xiàn)動態(tài)定時器的示例代碼
本篇文章主要介紹了Spring整合Quartz實現(xiàn)動態(tài)定時器的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01spring?boot自動裝配之@ComponentScan注解用法詳解
@ComponentScan的作用就是根據(jù)定義的掃描路徑,把符合掃描規(guī)則的類裝配到spring容器中,下面這篇文章主要給大家介紹了關于spring?boot自動裝配之@ComponentScan注解用法的相關資料,需要的朋友可以參考下2023-04-04Java編程Socket實現(xiàn)多個客戶端連接同一個服務端代碼
這篇文章主要介紹了Java編程Socket實現(xiàn)多個客戶端連接同一個服務端代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11Springboot?前后端分離項目使用?POI?生成并導出?Excel的操作方法
在做一個?SpringBoot?前后端分離項目的時候,需要將數(shù)據(jù)存到?Excel中,用戶可以下載?Excel,具體實現(xiàn)是采用?Apache?強大的?POI,本文給大家介紹Springboot?前后端分離項目使用?POI?生成并導出?Excel相關知識,感興趣的朋友一起看看吧2023-09-09