java基礎入門之IO流
io學習框架:

文件:
保存數(shù)據(jù)的地方。

1)常見文件對象的相關(guān)構(gòu)造器和方法:

當進行File file = new File(filePath);只是在內(nèi)存上有一個文件對象;
只有file.createNewFile();才會在磁盤創(chuàng)建文件

獲取文件的相關(guān)信息:
utf8中,一個漢字是三個字節(jié),所以當用字節(jié)流的read()方法一個字節(jié)一個字節(jié)的讀取的時候,將會出現(xiàn)亂碼的情況

2)目錄的刪除和增加:
a)用來刪除文件或者文件夾

b)文件夾的創(chuàng)建:

Io流的原理:

流的分類:
字節(jié)流適用于聲音等文件的傳輸,因為字節(jié)流是一個字節(jié)一個字節(jié)的讀取,可以保證無損;
字符流雖然讀取的效率高些,但更適用于文本的讀取;
注意:inpuStream,OutputStream,Reader,Writer全是抽象類,創(chuàng)建對象時候要實現(xiàn)他們的子類即可。

1)InputSream輸入流:


字節(jié)輸入流:文件–》程序
a)fileInputStream.read()一個一個字節(jié)讀取
(注意:輸出的時候不能像如圖框選的那樣輸出,因為read()讀取的是下一個字符了)

b)改進,使用fileInputStream.read(buffer)

2)OutputStream

注意:如果使用OutputStream寫入數(shù)據(jù)時候,文件不存在將自動進行文件的創(chuàng)建;
以下是寫入數(shù)據(jù)的幾種方式,
當使用紅框的語句的時候,寫入數(shù)據(jù)會追加在文件中;
否則,將覆蓋文件的內(nèi)容

完成文件的拷貝:(需要輸入流和輸出流的綜合應用)

3)FileReader:


1)FileReader的使用:

4) FileWriter:

使用filewriter后,必須關(guān)閉(close)或者刷新(flush),否則寫入不到指定文件

a)FileWriter的使用:
使用filewriter后,必須關(guān)閉(close)或者刷新(flush),否則寫入不到指定文件
close()相當于flush()+關(guān)閉

節(jié)點流和處理流:
1)節(jié)點流:直接讀取數(shù)據(jù)源的流



2)處理流:對節(jié)點流進行包裝

例如BufferReader:
readLine()是按行讀?。?br />
當返回null時候,表示文件讀取完畢;
關(guān)閉流的時候,這里只需要關(guān)閉BufferReader,因為底層會自動去關(guān)閉節(jié)點流;

BufferWriter:
注意:如果需要追加在文件的話,是在節(jié)點流進行設置;
newLine()插入一個換行符

兩者的區(qū)別與聯(lián)系:

BufferReader和BufferWriter實現(xiàn)文件拷貝:
注意:BufferReader和BufferWriter是安裝字符操作;
不要操作二進制文件(聲音,視頻,doc,pdf,等等),可能會造成文件損壞

處理字節(jié)的處理流:
BufferedOutputStream和BufferedInputStream實現(xiàn)拷貝圖片:

當然,除此之外,BufferedOutputStream和BufferedInputStream也可以實現(xiàn)文本的拷貝;
對象處理流:專門處理對象的流,專門把對象保存到文件中,并且能夠從文件中恢復;
序列化:就是保存數(shù)據(jù)的時候,保存數(shù)據(jù)的值和數(shù)據(jù)類型;
標記接口:沒有任何方法

1)ObjectInputStream:(也是包裝流)

示例:

2)ObjectOutputStream:

示例:
序列化之后,保存的文件格式,不是純文本,而是按照他的格式來存儲

當反序列化的時候需要用到getName();toString()等方法的時候,序列化也要一并把這些方法存儲進行;

對象流注意事項:

標準輸入和輸出:
標準輸入,從鍵盤是獲?。篠canner scanner = new Sanner(System.in);

轉(zhuǎn)換流:
InputStreamReader:字節(jié)流轉(zhuǎn)化(包裝)為字符流;


1)**OutputStreamReader:**字節(jié)流轉(zhuǎn)化(包裝)為字符流;



打印流:
(只有輸出流,沒有輸入流)
PrintStream和PrintWriter(可以把信息打印到文件里面)
1)PrintStream



2)PrintWriter

PrintWriter可以傳入一個輸出流,這里System.out是標準輸出

Properties類:
1)傳統(tǒng)的處理方法(使用處理流加載配置文件),不方便:

2)Properties方式:


總結(jié)
這篇文章就到這里了,希望大家能夠喜歡,也希望大家能夠多多關(guān)注腳本之家其他文章!
相關(guān)文章
Java中json格式化BigDecimal保留2位小數(shù)
這篇文章主要給大家介紹了關(guān)于Java中json格式化BigDecimal保留2位小數(shù)的相關(guān)資料,BigDecimal是Java中的一個數(shù)學庫,可以實現(xiàn)高精度計算,文中給出了詳細的代碼實例,需要的朋友可以參考下2023-09-09
springboot整合RabbitMQ 中的 TTL實例代碼
TTL 是 RabbitMQ 中一個消息或者隊列的屬性,表明一條消息或者該隊列中的所有消息的最大存活時間,單位是毫秒,這篇文章主要介紹了springboot整合RabbitMQ 中的 TTL,需要的朋友可以參考下2022-09-09
Spring?AOP實現(xiàn)用戶登錄統(tǒng)一驗證功能
這篇文章主要為大家詳細介紹了Spring?AOP如何實現(xiàn)用戶登錄統(tǒng)一驗證功能,文中的示例代碼講解詳細,對我們學習具有一定的借鑒價值,需要的可以參考一下2023-01-01
Java實現(xiàn)紀元秒和本地日期時間互換的方法【經(jīng)典實例】
這篇文章主要介紹了Java實現(xiàn)紀元秒和本地日期時間互換的方法,結(jié)合具體實例形式分析了Java日期時間相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例
這篇文章主要介紹了SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

