国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java.io (1) 基本輸入輸出流

haobowd / 1608人閱讀

摘要:基本輸入流輸入流類中包含兩類功能輸入流的兩大功能讀取流中字節數據的功能是通過方法來完成。基本輸出流與類相對應的類表示基本的輸出流,用來把數據從程序輸出到其他地方。

一堆廢話(趕快跳過)

在我們的日常開發中 I/O 涉及到我們開發的方方面面,雖然早在 JDK1.5 就新增了 NIO的概念,但是 java.io 的使用以及技巧在我們的日常開發中還是占據很高的比重。

概念(不看也行)

最基本的I/O 流是 java.io 包中的抽象類 java.io.InputStreamjava.io.OutputStream。s有預留的設計比較早,因此并沒有采用現在流行的面向接口的編程思路,而是采用了抽象類。新增的IO相關的API則大量使用了接口。如果留的實現只是對使用者暴漏字節這個層次的細節,則可以直接集成InputStream 或 OutputStream 類,并且提供自己二外的能力。

在接下來的幾個章節中,會逐章記錄
以下各種流類的詳細使用方法

BufferedInputStream, BufferedOutputStream 緩沖復用流

ByteArrayInputStream, ByteArrayOutputStream byte數組緩沖流

DataInputStream, DataOutputStream java原生數據流

ObjectInputStream, ObjectOutputStream 對象序列化流

PushbackInputStream, PushbackOutputStream 推回流

PipedInputStream, PipedOutputStream 管道流

SequenceInputStream, SequenceOutputStream 序列流

和字符流類和字符流的的裝飾類

Reader, Writer

InputStreamReader, InputStreamWriter

StringReader, StringWriter

BufferedReader, BufferedWriter

CharArrayReader, CharArrayWriter

同時也會記錄一些 java8 融入 Google guava 類庫對 流類的支持。

基本輸入流

輸入流 InputStream類中包含兩類功能

輸入流的兩大功能

讀取流中字節數據的功能是通過 read 方法來完成。該方法有以下3種重載形式

public abstract int read() throws IOException

public int read(byte b[]) throws IOException

public int read(byte b[], int off, int len) throws IOException

比較常見的操作流的方式就是 創建一個字節數組作為緩沖區,然后循環讀取,直到read方法返回-1或拋出 java.io.IOException 異常。read方法的返回值是每次調用中成功讀取的字節數。 需要要注意的是在讀取的過程中,對read方法調用是阻塞的。當流中沒有數據可用時,對read方法的調用需要等待。這種阻塞式的特性可能會成為應用中的性能瓶頸。

如果不使用字節數組,那么read方法每次只能讀取到一個字節,再有緩沖區的情況下雖然InputStream類每次也只是讀取一個字節,但是 InputStream類的子類一般會接受一個緩沖區最為參數的read方法提供更高效的實現。

抽象

正像他的名字一樣,字節流是流動的,像流水一樣。劉中的字節一旦流過去,就無法重新使用。

控制流的功能。

close 關閉功能
通過 close 方法,我們可以關閉一個 流,就像擰上水管龍頭一樣。java7及以后,更推薦使用 try-with-resource 語句來使用流。可以避免顯示的調用close方法。

javatry (
    FileInputStream fInput = new FileInputStream(new File("path/to/exists_file"));
    FileOutputStream fOutput = new FileOutputStream(new File("path/to/new_file"));
) {
    // ....fInput -> read -> fOutput
} catch (IOException e) {
    .....
} catch (FileNotFoundException e) {
    .....
}

skip 跳過若干個字節。相當于保留當前的位置往后移動若干個字節,這個功能可以通過skip方法來實現并不是所有的InputStream累都支持skip方法。

mark 讀取位置標記

reset 讀取位置重置
標記和重置是配合使用的,可以實現可以實現流中的內容重復讀取,而不會像一般的讀取那樣操作,數據流過去之后就無法在次讀取。但是并不是所有的流都支持標記功能,因此在使用mark方法來標記當前位置之前,需要通過markSupporetd方法來判斷當前流的實現是否支持標記功能。

available 獲取當沒有阻塞情況下,當前流中還有多少字節可供讀取。如果我們每次讀取調用available方法獲取到的字節書,不如在讀取一個大文件的同時對文件的內容進行處理,如果每次讀取是都不發生阻塞,就可以比較好的平均數據讀取和處理的時間。

基本輸出流

與InputStream類相對應的OutputStream類表示基本的輸出流,用來把數據從程序輸出到其他地方。基本OutputStream類的對象也是在自己這個層次上操作。其中最主要的是寫入數據的write方法。

write 寫入方法。
public abstract void write(int b) throws IOException
public void write(byte b[]) throws IOException
public void write(byte b[], int off, int len) throws IOException

write 方法也有3種類似的重載形式,可以每次寫入一個字節,也可以寫入一個字節數組中全部或部分內容。

控制方法

close 方法
關閉當前輸出流

flush 方法
強制要求OutputStream類對象對暫時保持內部緩沖區中的內容立即進行實際的寫入操作。因為有些OutputStream類的子類會在內部維護一個緩沖區,通過write方法寫入的數據會被首先放在這個緩沖區中,然后再摸個適合的實際執行已經緩沖的內容的寫入操作。在一般的場景中OutputStream對象的使用者一般不需要直接調用flush方法保證內部緩沖區數據成功寫入。這是因為當OutputStream類對象內部的緩沖區滿了以后,會自動執行寫入操作。OutputStram類的對象被關閉時,flush方法一般也會被自動調用。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64233.html

相關文章

  • 從設計者的角度理解Java IO

    摘要:通過多個裝飾類實現責任鏈模式,它將對一個輸入流的不同處理分散到不同的中去。 1、基本概念 1.1、InputStream 最基本的字節輸入流,抽象類,定義了讀取原始字節的所有基本方法1.1.1、public abstract int read() throws IOException 讀取一個字節的方法,最基礎的方法1.1.2、public int read(byte b[], in...

    Flink_China 評論0 收藏0
  • Java學習筆記5-方法、(Stream)、文件(File)和IO

    摘要:是方法返回值的數據類型。方法名和參數表共同構成方法簽名。構造方法和它所在類的名字相同,但構造方法沒有返回值。輸入流表示從一個源讀取數據,輸出流表示向一個目標寫數據。下圖是一個描述輸入流和輸出流的類層次圖。有多種構造方法可用來創建對象。 我們經常使用到 System.out.println(),那么它是什么呢? 一、系統方法 我們經常使用到 System.out.println(),那么...

    suemi 評論0 收藏0
  • 高薪程序員&面試題精講系列22之說說JavaIO,常用哪些IO

    摘要:一面試題及剖析今日面試題今天壹哥帶各位復習一塊可能會令初學者比較頭疼的內容,起碼當時讓我很有些頭疼的內容,那就是流。在這里壹哥會從兩部分展開介紹流,即與流。除此之外盡量使用字節流。關閉此輸入流并釋放與流相關聯的任何系統資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復習一塊可...

    fnngj 評論0 收藏0
  • 第十五章 輸入輸出系統

    摘要:在包下主要包括輸入輸出兩種流,每種輸入輸出流又可分為字節流和字符流兩大類。輸入輸出是從程序運行所在的內存的角度而言的。的輸入流主要由和作為基類,而輸出流主要由和作為基類。 本章主要參考和摘自瘋狂java講義上面的(java編程思想的后面看過后有新的內容再補充進去吧)。  輸入輸出是所有程序都必需的部分————使用輸入機制允許程序讀取外部數據(包括磁盤、光盤等存儲設備上的數據和用戶輸入的...

    hankkin 評論0 收藏0
  • Java IO

    摘要:分類一按操作方式類結構字節流和字符流字節流以字節為單位,每次次讀入或讀出是位數據。該對象并不是流體系中的一員,其封裝了字節流,同時還封裝了一個緩沖區字符數組,通過內部的指針來操作字符數組中的數據。 分類一:按操作方式(類結構) 字節流和字符流: 字節流:以字節為單位,每次次讀入或讀出是8位數據。可以讀任何類型數據。 字符流:以字符為單位,每次次讀入或讀出是16位數據。其只能讀取字符類...

    Salamander 評論0 收藏0

發表評論

0條評論

haobowd

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<