日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java IO: 流

發布時間:2023/12/3 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java IO: 流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Java IO: 流

原文鏈接?作者:?Jakob?Jenkov?譯者:?李璟(jlee381344197@gmail.com)

Java?IO流是既可以從中讀取,也可以寫入到其中的數據流。正如這個系列教程之前提到過的,流通常會與數據源、數據流向目的地相關聯,比如文件、網絡等等。

流和數組不一樣,不能通過索引讀寫數據。在流中,你也不能像數組那樣前后移動讀取數據,除非使用RandomAccessFile?處理文件。流僅僅只是一個連續的數據流。

某些類似PushbackInputStream?流的實現允許你將數據重新推回到流中,以便重新讀取。然而你只能把有限的數據推回流中,并且你不能像操作數組那樣隨意讀取數據。流中的數據只能夠順序訪問。

Java?IO流通常是基于字節或者基于字符的。字節流通常以“stream”命名,比如InputStream和OutputStream。除了DataInputStream?和DataOutputStream?還能夠讀寫int,?long,?float和double類型的值以外,其他流在一個操作時間內只能讀取或者寫入一個原始字節。

字符流通常以“Reader”或者“Writer”命名。字符流能夠讀寫字符(比如Latin1或者Unicode字符)。可以瀏覽Java?Readers?and?Writers獲取更多關于字符流輸入輸出的信息。

InputStream

java.io.InputStream類是所有Java?IO輸入流的基類。如果你正在開發一個從流中讀取數據的組件,請嘗試用InputStream替代任何它的子類(比如FileInputStream)進行開發。這么做能夠讓你的代碼兼容任何類型而非某種確定類型的輸入流。

然而僅僅依靠InputStream并不總是可行。如果你需要將讀過的數據推回到流中,你必須使用PushbackInputStream,這意味著你的流變量只能是這個類型,否則在代碼中就不能調用PushbackInputStream的unread()方法。

通常使用輸入流中的read()方法讀取數據。read()方法返回一個整數,代表了讀取到的字節的內容(譯者注:0?~?255)。當達到流末尾沒有更多數據可以讀取的時候,read()方法返回-1。

這是一個簡單的示例:

InputStream input = new FileInputStream("c:\\data\\input-file.txt"); int data = input.read(); while(data != -1){data = input.read(); }

OutputStream

java.io.OutputStream是Java?IO中所有輸出流的基類。如果你正在開發一個能夠將數據寫入流中的組件,請嘗試使用OutputStream替代它的所有子類。

這是一個簡單的示例:

OutputStream output = new FileOutputStream("c:\\data\\output-file.txt"); output.write("Hello World".getBytes()); output.close();

組合流

你可以將流整合起來以便實現更高級的輸入和輸出操作。比如,一次讀取一個字節是很慢的,所以可以從磁盤中一次讀取一大塊數據,然后從讀到的數據塊中獲取字節。為了實現緩沖,可以把InputStream包裝到BufferedInputStream中。代碼示例:

InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\input-file.txt"));

緩沖同樣可以應用到OutputStream中。你可以實現將大塊數據批量地寫入到磁盤(或者相應的流)中,這個功能由BufferedOutputStream實現。

緩沖只是通過流整合實現的其中一個效果。你可以把InputStream包裝到PushbackInputStream中,之后可以將讀取過的數據推回到流中重新讀取,在解析過程中有時候這樣做很方便。或者,你可以將兩個InputStream整合成一個SequenceInputStream。

將不同的流整合到一個鏈中,可以實現更多種高級操作。通過編寫包裝了標準流的類,可以實現你想要的效果和過濾器。


總結

以上是生活随笔為你收集整理的Java IO: 流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。