#Java學習#(八)流

其他JAVA學習的內容見:目錄

概念與分類

  • 概念
    • 來自源或送至目的地的數據流動,程序和I/O設備或文件之間進行傳輸的對象
    • 功能:完成數據的輸入、輸出。
    • 一個流是以另一個對象爲源或目的傳輸信息的對象;功能類似於一個管道
  • 分類
    • Java流支持的兩種類型的數據
      • 原始字節
      • Unicode字符
    • 按照讀寫數據的類型
      • 字節流(流)
      • 字符流(閱讀器、書寫器)
        在這裏插入圖片描述
        在這裏插入圖片描述

輸入輸出流

在這裏插入圖片描述

  • 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

轉換流

  • 功能:將字節流轉換爲字符流。
  • InputStreamReaderOutputStreamWriter
    • InputStreamReader需要與InputStream套接
    • OutputStreamWriter需要與OutputStream套接。
    • 構造時可以指定編碼集合:new
      • InputStreamReader(System.in,"ISO8859_1");

數據流

  • 作用:直接以基本類型爲單元進行讀寫,提供了可以存取Java基本類型數據的方法。
  • 主要接口和類
    • 接口:DataInputDataOutput
    • 實現類:DataInputStreamDataOutputStream
  • 構造方法:
    • DataInputStream(InputStream in)
    • DataOutputStream(OutputStream out )

Print流

  • 輸出流:PrintWriterPrintStream
    • PrintStreamOutputStream基礎上提供了增強功能,可方便地輸出各種類型的數據(不僅限於byte型)的格式化表示。
    • PrintWriter提供了PrintStream的所有打印方法。
    • 區別:PrintStream只能封裝OutputStream類型的字節流,PrintWriter既可以封裝OutputStream類型的字節流,還能封裝Writer類型的字符輸出流。
  • 主要方法:
    • print:不添加換行符
    • println:在輸出的結尾添加一個換行符

對象序列化

  • 對象序列化(序列化):將Java對象轉換爲字節序列,這些字節序列可以保存在磁盤上或者通過網絡傳輸,以備以後重新恢復成原來的對象。
    • 作用:使對象可以脫離程序的運行而獨立存在。
    • 對象的序列化:把對象轉換爲字節序列的過程。
    • 對象的反序列化:把字節序列恢復爲對象的過程。
  • 能夠序列化的前提:類是可序列化的(serializable)。
  • 類必須實現如下兩個接口之一:
    • Serializable:標記接口,實現它無需實現任何方法,它只是表明該類的實例是可序列化的。
    • Externalizable
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章