io學習框架:

檔案:
保存資料的地方,

1)常見檔案物件的相關構造器和方法:

當進行File file = new File(filePath);只是在記憶體上有一個檔案物件;
只有file.createNewFile();才會在磁盤創建檔案

獲取檔案的相關資訊:
utf8中,一個漢字是三個位元組,所以當用位元組流的read()方法一個位元組一個位元組的讀取的時候,將會出現亂碼的情況

2)目錄的洗掉和增加:
a)用來洗掉檔案或者檔案夾

b)檔案夾的創建:

Io流的原理:

流的分類:
位元組流適用于聲音等檔案的傳輸,因為位元組流是一個位元組一個位元組的讀取,可以保證無損;
字符流雖然讀取的效率高些,但更適用于文本的讀取;
注意:inpuStream,OutputStream,Reader,Writer全是抽象類,創建物件時候要實作他們的子類即可,

1)InputSream輸入流:


位元組輸入流:檔案–》程式
a)fileInputStream.read()一個一個位元組讀取
(注意:輸出的時候不能像如圖框選的那樣輸出,因為read()讀取的是下一個字符了)

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

2)OutputStream

注意:如果使用OutputStream寫入資料時候,檔案不存在將自動進行檔案的創建;
以下是寫入資料的幾種方式,
當使用紅框的陳述句的時候,寫入資料會追加在檔案中;
否則,將覆寫檔案的內容

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

3)FileReader:


1)FileReader的使用:

4) FileWriter:

使用filewriter后,必須關閉(close)或者重繪(flush),否則寫入不到指定檔案

a)FileWriter的使用:
使用filewriter后,必須關閉(close)或者重繪(flush),否則寫入不到指定檔案
close()相當于flush()+關閉

節點流和處理流:
1)節點流:直接讀取資料源的流



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

例如BufferReader:
readLine()是按行讀取:
當回傳null時候,表示檔案讀取完畢;
關閉流的時候,這里只需要關閉BufferReader,因為底層會自動去關閉節點流;

BufferWriter:
注意:如果需要追加在檔案的話,是在節點流進行設定;
newLine()插入一個換行符

兩者的區別與聯系:

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

處理位元組的處理流:
BufferedOutputStream和BufferedInputStream實作拷貝圖片:

當然,除此之外,BufferedOutputStream和BufferedInputStream也可以實作文本的拷貝;
物件處理流:專門處理物件的流,專門把物件保存到檔案中,并且能夠從檔案中恢復;
序列化:就是保存資料的時候,保存資料的值和資料型別;
標記介面:沒有任何方法

1)ObjectInputStream:(也是包裝流)

示例:

2)ObjectOutputStream:

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

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

物件流注意事項:

標準輸入和輸出:
標準輸入,從鍵盤是獲取:Scanner scanner = new Sanner(System.in);

轉換流:
InputStreamReader:位元組流轉化(包裝)為字符流;


1)**OutputStreamReader:**位元組流轉化(包裝)為字符流;



列印流:
(只有輸出流,沒有輸入流)
PrintStream和PrintWriter(可以把資訊列印到檔案里面)
1)PrintStream



2)PrintWriter

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

Properties類:
1)傳統的處理方法(使用處理流加載組態檔),不方便:

2)Properties方式:


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/287599.html
標籤:java
上一篇:Java注解的使用
