自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java的標準數據流

開發(fā) 后端
Java輸入輸出(I/O)API是Java里最重要的API之一。Java I/O提供了許多API提供對文件,內存,socket的讀寫。本文對Java I/O包括NIO等做一個總結。

Java輸入輸出(I/O)API是Java里最重要的API之一。Java I/O提供了許多API提供對文件,內存,socket的讀寫。本文對Java I/O包括NIO等做一個總結。

Java里的流(Stream)概念:

流是一種有序的字節(jié)數據對象。流又分為輸入流(InputStream)和輸出流(OutputStream)。輸入流從外部資源(文件,內存,socket等)讀入字節(jié)數據到Java對象;輸出流則把Java對象(字節(jié)數據等)寫入到外部資源。

所有Java I/O都可歸類為以下兩種:

1,字節(jié)數據輸入輸出I/O

2,文字列數據輸入輸出I/O

所有的字節(jié)數據輸入輸出I/O都繼承自java.io.InputStream和java.io.OutputStream接口。

字節(jié)數據輸入流及其派生類:

  1. java.io.InputStream   
  2. +--java.io.ByteArrayInputStream  
  3. +--java.io.BufferedInputStream  
  4. +--java.io.DataInputStream  
  5. +--java.io.FileInputStream  
  6. +--java.io.FilterInputStream  
  7. +--java.io.ObjectInputStream  
  8. +--java.io.PipedInputStream  
  9. +--java.io.PushbackInputStream  
  10. +--java.io.SequenceInputStream  
  11. +--java.io.StringBufferInputStream 

字節(jié)數據輸出流及其派生類:

  1. java.io.OutputStream  
  2. +--java.io.BufferedOutputStream  
  3. +--java.io.ByteArrayOutputStream  
  4. +--java.io.DataOutputStream  
  5. +--java.io.FileOutputStream  
  6. +--java.io.FilterOutputStream  
  7. +--java.io.ObjectOutputStream  
  8. +--java.io.PipedOutputStream 

所有的文字列數據輸入輸出I/O都繼承自java.io.Reader和java.io.Writer接口。

文字列數據輸入流及其派生類:

  1. java.io.Reader  
  2. +--java.io.BufferedReader  
  3. +--java.io.CharArrayReader  
  4. +--java.io.FileReader  
  5. +--java.io.FilterReader  
  6. +--java.io.InputStreamReader  
  7. +--java.io.LineNumberReader  
  8. +--java.io.PipedReader  
  9. +--java.io.PushbackReader  
  10. +--java.io.StringReader 

文字列數據輸出流及其派生類:

  1. java.io.Writer  
  2. +--java.io.BufferedWriter  
  3. +--java.io.CharArrayWriter  
  4. +--java.io.FilterWriter  
  5. +--java.io.OutputStreamWriter  
  6. +--java.io.FileWriter  
  7. +--java.io.PipedWriter  
  8. +--java.io.PrintWriter  
  9. +--java.io.StringWriter 

它們(java.io)之間的關系可以用下圖來表示:

 

 

JDK 1.4以前的版本的Java I/O操作集中在java.io這個包中,是基于流的阻塞(blocking)API。

從JDK1.4開始引入了New I/O(NIO)API。該API包含在java.nio.*里。NIO有時也叫做nonblocking I/O(非阻塞I/O),NIO基于緩沖區(qū),并能提供非阻塞(non-blocking)IO操作。

NIO主要包:

java.nio

定義了Buffer及其數據類型相關的子類。

java.nio.channels

定義了高速文件處理/socket通信處理等I/O處理的Channel接口以及這些接口在文件系統(tǒng)和網絡通信等上的實現(xiàn)類。同時可以通過Selector類,提供了進行非阻塞I/O操作的方法。該包是NIO API的核心包。

java.nio.charset

定義了字符編碼和解碼處理類。

NIO接口/類的層次結構:

  1. java.nio.ByteBuffer  
  2. java.nio.channels.Channel  
  3. +--java.nio.channels.ServerSocketChannel  
  4. +--java.nio.channels.ReadableByteChannel  
  5. +--java.nio.channels.ScatteringByteChannel  
  6. +--java.nio.channels.ByteChannel  
  7. +--java.nio.channels.WritableByteChannel  
  8. +--java.nio.channels.ByteChannel  
  9. +--java.nio.channels.GatheringByteChannel  
  10. java.nio.channels.Slector  
  11. java.nio.channels.ScatteringByteChannel, ByteChannel, GatheringByteChannel  
  12. +--java.nio.channels.FileChannel  
  13. +--java.nio.channels.SocketChannel  
  14. +--java.nio.channels.DatagramChannel  
  15. java.nio.charset.Charset  
  16. java.nio.charset.CharsetEncoderjava.nio.charset.CharsetDecoder 

NIO層次結構圖:

 

***節(jié) 數據流的基本概念

◆ 理解數據流

流一般分為輸入流(Input Stream)和輸出流(Output Stream)兩類,但這種劃分并不是絕對的。比如一個文件,當向其中寫數據時,它就是一個輸出流;當從其中讀取數據時,它就是一個輸入流。當然,鍵盤只是一個數人流,而屏幕則只是一個輸出流。

◆ 的標準數據流

標準輸入輸出指在字符方式下(如DOS),程序與系統(tǒng)進行交互的方式,分為三種:

標準輸入studin,對象是鍵盤。

標準輸出stdout,對象是屏幕。

標準錯誤輸出stderr,對象也是屏幕。

例 8.1 從鍵盤輸入字符。

本例用System.in.read(buffer)從鍵盤輸入一行字符,存儲在緩沖區(qū)buffer中,count保存實際讀入的字節(jié)個數,再以整數和字符兩種方式輸出buffer中的值。Read方法在java.io包中,而且要拋出IOException異常。程序如下:

  1. import java.io.*;  
  2. public class Input1  
  3. {  
  4. public static void main(String args[]) throws IOException  
  5. {   
  6. System.out.println("Input: ");  
  7. byte buffer[] = new byte[512]; //輸入緩沖區(qū)  
  8. int count = System.in.read(buffer); //讀取標準輸入流  
  9. System.out.println("Output: ");  
  10. for (int i=0;i<COUNT;I++) 輸出buffer元素值  
  11. {  
  12. System.out.print(" "+buffer[i]);  
  13. }  
  14. System.out.println();  
  15. for (int i=0;i<COUNT;I++) 按字符方式輸出buffer  
  16. {  
  17. System.out.print((char) buffer[i]);  
  18. }  
  19. System.out.println("count = "+ count); //buffer實際長度  
  20. }  

程序中,main方法采用throws子句拋出IOException異常交由系統(tǒng)處理。

Java.io包中的數據流及文件類

字節(jié)流:

從InputStream和OutputStream派生出來的一系列類。這類流以字節(jié)(byte)為基本處理單位。

  • InputStream、OutputStream
  • FileInputStream、FileOutputStream
  • PipedInputStream、PipedOutputStream
  • ByteArrayInputStream、ByteArrayOutputStream
  • FilterInputStream、FilterOutputStream
  • DataInputStream、DataOutputStream
  • BufferedInputStream、BufferedOutputStream

字符流:

從Reader和Writer派生出的一系列類,這類流以16位的Unicode碼表示的字符為基本處理單位

  • Reader、Writer
  • InputStreamReader、OutputStreamWriter
  • FileReader、FileWriter
  • CharArrayReader、CharArrayWriter
  • PipedReader、PipedWriter
  • FilterReader、FilterWriter
  • BufferedReader、BufferedWriter
  • StringReader、StringWriter

原文鏈接:http://www.cnblogs.com/aviva/archive/2008/03/28/1127440.html

【編輯推薦】

  1. 全面解讀Java NIO工作原理
  2. OA市場格局輪廓突顯 JAVA成高端用戶主流選擇
  3. Java NIO 異步讀取網絡數據
  4. Java NIO(異步IO)Socket通信例子
  5. 影響Java NIO框架性能的因數
責任編輯:林師授 來源: aviva的博客
相關推薦

2009-08-19 10:41:12

Java輸入數據流

2016-11-14 19:01:36

數據流聊天系統(tǒng)web

2020-02-06 19:12:36

Java函數式編程編程語言

2022-03-18 08:57:17

前端數據流選型

2017-11-16 19:26:34

海量數據算法計算機

2021-10-27 10:43:36

數據流中位數偶數

2011-04-14 14:43:38

SSISTransformat

2012-07-30 08:31:08

Storm數據流

2019-12-19 14:38:08

Flink SQL數據流Join

2011-04-19 09:18:02

SSIS數據轉換

2009-07-15 09:06:11

Linux圖形系統(tǒng)X11的CS架構

2013-10-21 10:58:50

微軟大數據SQL Server

2014-02-11 08:51:15

亞馬遜PaaSAppStream

2014-12-02 10:56:47

TCPIP交互數據流

2021-06-29 19:24:42

數據流數據排序

2020-08-20 11:24:31

物聯(lián)網數據技術

2023-07-26 00:20:20

Java 8數組方式

2023-07-24 08:20:11

StreamJava方式

2023-08-18 09:29:59

Java數據流

2019-06-18 13:51:08

大數據流處理新興市場
點贊
收藏

51CTO技術棧公眾號