其他JAVA學習的內容見:目錄
概念與分類
- 概念
- 來自源或送至目的地的數據流動,程序和I/O設備或文件之間進行傳輸的對象
- 功能:完成數據的輸入、輸出。
- 一個流是以另一個對象爲源或目的傳輸信息的對象;功能類似於一個管道
- 分類
- Java流支持的兩種類型的數據
- 原始字節
- Unicode字符
- 按照讀寫數據的類型
- 字節流(流)
- 字符流(閱讀器、書寫器)
- Java流支持的兩種類型的數據
輸入輸出流
- InputStream
- 所有字節輸入流的基類。
- 操作的數據的基本單位:字節(8bit)。
- 基本方法
int read( ) throws IOException
int read(byte[ ] buffer) throws IOException
int read(byte[ ] buffer,int offset,int length)throws IOException
void close( ) throws IOException
- OutputStream
- 所有字節輸出流的基類。
- 操作的數據的基本單位:字節(8bit)
int write(int b) throws IOException
int write(byte[ ] b) throws IOException
int write(byte[ ] b,int offset,int length)throws IOException
void flush( ) throws IOException
void close( ) throws IOException
- Reader
- 所有字符輸入流的基類。
- 操作的數據的基本單位:字符(16bit)
int read( ) throws IOException
int read(char[ ] cbuf) throws IOException
int read(char[ ] cbuf,int offset,int length) throws IOException
void close( ) throws IOException
- Writer
- 所有字符輸出流的基類。
- 操作的數據的基本單位:字符(16bit)
void write(int c) throws IOException
void write(char[ ] cbuf) throws IOException
void write(char[ ] cbuf,int offset,int length) throws IOException
void write(String string) throws IOException
void write(String string,int offset,int length) throws IOException
void close( ) throws IOException
void flush( ) throws IOException
節點流
- 功能:連接文件的輸入(出)流。
- 實例1:
TestFileInputStream
- 功能:輸入一個文件中全部字符(Unicode編碼)。
- 實例2:
TestFileReader
- 功能:打印出一個文件中全部字符(Unicode編碼)。
- 實例3:
TestFileOutputStream
- FileOutputStream對象建立時,若文件不存在,則自動建立。
- 實例4:
TestFileStreamToCopyMp3
- 功能:實現了mp3文件的拷貝
- 實例5:
TestFileWriter
- 功能:向另一個文件輸入大部分Unicode編碼。
處理流(過濾流)
- 某些流從文件或其他位置讀寫字節;某些流將字節“組裝”成更有用的數據類型;
- 通過一個現成的流傳遞給另一個流的構造器,形成“過濾流”
緩衝流
- 接在相應的節點流之上,對數據的讀寫提供了緩衝功能。
- 作用:提高了讀寫的效率。
- 主要類:
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
轉換流
- 功能:將字節流轉換爲字符流。
InputStreamReader
和OutputStreamWriter
InputStreamReader
需要與InputStream
套接OutputStreamWriter
需要與OutputStream
套接。- 構造時可以指定編碼集合:
new
InputStreamReader(System.in,"ISO8859_1");
數據流
- 作用:直接以基本類型爲單元進行讀寫,提供了可以存取Java基本類型數據的方法。
- 主要接口和類
- 接口:
DataInput
、DataOutput
- 實現類:
DataInputStream
、DataOutputStream
- 接口:
- 構造方法:
DataInputStream(InputStream in)
DataOutputStream(OutputStream out )
Print流
- 輸出流:
PrintWriter
和PrintStream
PrintStream
在OutputStream
基礎上提供了增強功能,可方便地輸出各種類型的數據(不僅限於byte型)的格式化表示。PrintWriter
提供了PrintStream
的所有打印方法。- 區別:
PrintStream
只能封裝OutputStream
類型的字節流,PrintWriter
既可以封裝OutputStream
類型的字節流,還能封裝Writer
類型的字符輸出流。
- 主要方法:
print
:不添加換行符println
:在輸出的結尾添加一個換行符
對象序列化
- 對象序列化(序列化):將Java對象轉換爲字節序列,這些字節序列可以保存在磁盤上或者通過網絡傳輸,以備以後重新恢復成原來的對象。
- 作用:使對象可以脫離程序的運行而獨立存在。
- 對象的序列化:把對象轉換爲字節序列的過程。
- 對象的反序列化:把字節序列恢復爲對象的過程。
- 能夠序列化的前提:類是可序列化的(serializable)。
- 類必須實現如下兩個接口之一:
Serializable
:標記接口,實現它無需實現任何方法,它只是表明該類的實例是可序列化的。Externalizable