字節輸入流:io包中的InputStream爲全部字節輸入流的父類。

字節輸入流:io包中的InputStream爲全部字節輸入流的父類。程序員

Int read();讀入一個字節(每次一個);數組

可先使用new  byte[]=數組,調用read(byte[] b)網絡

read (byte[])返回值能夠表示有效數;read (byte[])返回值爲-1表示結束。dom

 

字節輸出流:io包中的OutputStream位全部字節輸入流的父類。編碼

Write和輸入流中的read相對應。線程

 

在流中close()方法由程序員控制。由於輸入輸出流已經超越了VM的邊界,因此有時可能沒法回收資源。指針

原則:凡是跨出虛擬機邊界的資源都要求程序員本身關閉,不要期望垃圾回收。code

以Stream結尾的類都是字節流。對象

若是構造FileOutputStream的同時磁盤會創建一個文件。若是建立的文件與磁盤上已有的文件名重名,就會發生覆蓋。ip

用FileOutputStream中的boolean,則視,添加狀況,將數據覆蓋重名文件仍是將輸入內容放在文件的後面。(編寫程序驗證)

 

DataOutputStream:輸入數據的類型。

由於每中數據類型的不一樣,因此可能會輸出錯誤。

全部對於:DataOutputStream

          DataInputStream

          二者的輸入順序必須一致。

過濾流:

 bufferedOutputStream

 bufferedInputStream

用於給節點流增長一個緩衝的功能。
在VM的內部創建一個緩衝區,數據先寫入緩衝區,等到緩衝區的數據滿了以後再一次性寫出,效率很高。

使用帶緩衝區的輸入輸出流的速度會大幅提升,緩衝區越大,效率越高。(這是典型的犧牲空間換時間)

切記:使用帶緩衝區的流,若是數據數據輸入完畢,使用flush方法將緩衝區中的內容一次性寫入到外部數據源。用close()也能夠達到相同的效果,由於每次close都會使用flush。必定要注意關閉外部的過濾流。

 

(非重點)管道流:也是一種節點流,用於給兩個線程交換數據。

PipedOutputStream

PipedInputStream

輸出流:connect(輸入流)

 

RondomAccessFile類容許隨機訪問文件

GetFilepoint()能夠知道文件中的指針位置,使用seek()定位。

Mode(「r」:隨機讀;」w」:隨機寫;」rw」:隨機讀寫)

練習:寫一個類AJAVA A file1 file2

file1要求是系統中已經存在的文件。File2是尚未存在的文件。

執行完這個命令,那麼file2就是file1中的內容。

 

字符流:reader\write只能輸純文本文件。

FileReader類:字符文件的輸出

 

字節流與字符流的區別:

字節流的字符編碼:

字符編碼把字符轉換成數字存儲到計算機中,按ASCii將字母映射爲整數。

把數字從計算機轉換成相應的字符的過程稱爲解碼。

編碼方式的分類:

ASCII(數字、英文):1個字符佔一個字節(全部的編碼集都兼容ASCII

ISO8859-1(歐洲):1個字符佔一個字節

GB-2312/GBK1個字符佔兩個字節

Unicode: 1個字符佔兩個字節(網絡傳輸速度慢)

UTF-8:變長字節,對於英文一個字節,對於漢字兩個或三個字節。

 

原則:保證編解碼方式的統一,才能不至於出現錯誤。

Io包的InputStreamread稱爲從字節流到字符流的橋轉換類。這個類能夠設定字符轉換方式。

OutputStreamred:字符到字節

Bufferreadreadline()使得字符輸入更加方便。

I/O流中,全部輸入方法都是阻塞方法。

Bufferwrite給輸出字符加緩衝,由於它的方法不多,因此使用父類printwrite,它可使用字節流對象,並且方法不少。

 

練習:作一個記事本

swing/JfileChoose: getSelect file()

InputStreeamReader:把字節變爲字符

JAVA中對字符串長無限制  bufferedReaderir

相關文章
相關標籤/搜索