Java基礎I/O流型別
Java把不同的資料來源與程式間的資料傳輸都抽象為“流”,以實現相對統一而簡單的輸入/輸出(I/O,Input/Output)操作方式。
I/O流的分類有多種方式:
- 按照資料流動的方向,可以分為輸入流(InputStream)和輸出流(OutputStream)。
輸入流只能從中讀取資料,而不能向其寫出資料;而輸出流則只能向其寫出資料,而不 能從中讀取資料。這裡是站在程式的角度來確定出入方向,即將資料從程式外部傳
送到程式中謂之“輸入”資料。反之,為輸出。
- 根據資料流所關聯的是資料來源還是其他資料流,可以分為節點流(Node Stream)和處理流(Processing Stream)。
節點流直接與資料來源連線,處理流不直接連到資料來源。
- 按照傳輸資料的“顆粒大小”劃分,可分為字元流(Character Stream)和位元組流(Byte Stream)。
凡是以InputStream和OutputStream結尾的型別均為位元組流,凡是以Reader和Writer結尾的均為字元流。
基礎I/O流型別
- InputStream
抽象類java.io.InputStream是所有位元組輸入流型別的父類,該類中定義了以位元組為單位讀取資料的基本方法,並在其子類進行了分化和實現。
InputStream類中定義的方法包括:
- <span style="font-size: small;">public abstract int read()
- 從此輸入流中讀下一個位元組。位元組值被轉換為0-255之間的一個(無符號)整數返回,到達流的結尾無位元組可讀時將返回-1。
- public int read(byte[] b)
- 從此輸入流中讀取一定數目的位元組並存入緩衝陣列b。實際讀取的位元組數被作為一個整數返回,到達流的結尾無位元組時將返回-1。
- public int read(byte[],int off, int len)
- 從此輸入流中讀取最多len個位元組的資料到一個位元組陣列。它將盡可能去讀取len個位元組的資料,但可能只讀取到較少數目的位元組,實際讀取的位元組數被作為一個整數返回,到達流的結尾無位元組可讀時將返回-1。
- public void close()
- 關閉此輸入流並釋放任何與這個流相關聯的系統資源。
- public int available()
- 返回此後從此輸入流中還可以無阻塞地讀取(或跳過)的位元組數。
- public long skip(long n)
- 跳過並丟棄輸入流中的n個位元組資料。
- public boolean markSupported()
- 測試此輸入流是否支援mark()和reset()方法。InputStream類的markSupported方法返回false,在其子類中產生了分化。
- public synchronized void mark(int readlimit)
- 標記此輸入流中的當前位置。隨後呼叫reset()方法時,將把這個流重置於最後一次標記的位置,從而使隨後的讀取重讀同樣的位元組。引數readlimit指明輸入流在標記位置失效前允許讀多少位元組。
- public synchronized void reset()
- 將此輸入流重置於上一次在這個輸入流上呼叫mark()方法時的位置。</span>
- OutputStream
java.io.OutputStream與java.io.InputStream是對應,是所有位元組輸出流型別的抽象父類。
- public abstract write(int b)
- 將b的二進位制表示值低8位組成一個位元組,寫出到此輸出流。
- public void write(byte b[])
- 將位元組陣列b中的全部b.length個位元組一次寫出到此輸出流。
- public void write(byte b[],int off,int len)
- 將位元組陣列b中下表off開始的len個位元組寫入到此輸出流。
- public void close()
- 關閉此輸入流並釋放任何與之相關聯的系統資源。
- public void flush()
- 清空此輸出流,即將任何被緩衝輸出的位元組立即傳送到輸出流中。
- Reader
抽象類java.io.Reader是所有字元輸入流的父類,其中宣告瞭用於讀取字元流的有關方法。
- Reader 類中定義的方法有:
- public int read()
- 從此輸入流中讀取一個字元,並轉換為0-65535範圍的整數返回,到達流的結尾時返回-1。
- public int read(char cbuf[])
- 將字元讀入陣列cbuf,並返回實際讀取的字元數,到達流的結尾時返回-1。
- public int read(char cbuf[],int off,int len)
- 將字元讀入陣列cbuf中從off開始的空間,每次最多讀len個字元,返回實際讀取的字元數,到達流的結尾時返回-1。
- public boolean ready()
- 判斷此流是否準備好,如是,則可以進行讀操作。
- 還有一些與InputStream類相似的。
- public abstract void close();
- public long skip(long n)
- public boolean markSupported();
- Writer
java.io.Writer與java.io.Reader類對應,是所有字元輸出流型別的共同父類,也是一個抽象類,其中宣告的方法如下:
- Writer類中定義的主要方法有:
- public void write(int c)
- 擷取引數c二進位制形式的低16位組成一個字元,並將其寫出到當前物件所關聯的資料來源中。
- public void write(char cbuf[])
- 將陣列cbuf中的字元依次寫出。
- public void write(char cbuf,int off, int len)
- 將陣列cbuf中下標off開始的len個字元寫出。
- public void write(String str)
- 將字串str中的全部字元依次寫出。
- public void write(String str,int off,int len)
- 將字串str中下標off開始的len個字元寫出。
- public abstract void close()
- 關閉此輸出流並釋放任何與之相聯絡的系統資源。
- public abstract void flush()
- 清空此輸出流,即將任何被緩衝輸出的字元立即傳送到輸出流中。
- public void mark(int readAheadLimit)
- public void reset()
相關文章
- Java基礎——I/O流Java
- I/O基礎
- [shell基礎]——I/O重定向
- Java I/OJava
- Java(8)I/OJava
- 【java】I/O流Java
- Java I/O流Java
- java的I/OJava
- Java 非同步 I/OJava非同步
- JAVA I/O系統Java
- Java™ 教程(命令列I/O)Java命令列
- java 淺析I/O模型Java模型
- [java]基礎型別Java型別
- 深入理解Java I/O模型Java模型
- "萬字" Java I/O 詳解Java
- Java I/O 教程(一) 介紹Java
- Java I/O 教程(四) FileInputStream 類Java
- Java I/O 教程(五) BufferedOutputStream 類Java
- Java I/O 教程(六) BufferedInputStream 類Java
- Java I/O 模型的演進Java模型
- Java NIO:淺析I/O模型Java模型
- Veritas Quick I/O and Cached Quick I/OUI
- 二、javase基礎知識總結(從檔案 I/O開始)Java
- Java I/O模型及其底層原理Java模型
- Java學習筆記之I/OJava筆記
- Java入門學習-理解I/OJava
- Java I/O 教程(三) FileOutputStream類Java
- Java I/O 教程(十) ObjectOutputStream和ObjectInputStreamJavaObject
- Java I/O 教程(七) DataOutputStream和DataInputStreamJavaAI
- Java NIO1:I/O模型概述Java模型
- Java I/O流模型概念分析整理Java模型
- 《Java 高階篇》六:I/O 流Java
- 【Java I/O】如何用Java讀寫檔案Java
- 計算機I/O與I/O模型計算機模型
- I/O埠和I/O記憶體記憶體
- 基礎-JAVA集合型別主要區別Java型別
- java資料型別基礎Java資料型別
- java入門 -- Java I/O(四) 異常處理Java