偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java的標(biāo)準(zhǔn)數(shù)據(jù)流

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

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

Java里的流(Stream)概念:

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

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

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

2,文字列數(shù)據(jù)輸入輸出I/O

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

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

  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é)數(shù)據(jù)輸出流及其派生類:

  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 

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

文字列數(shù)據(jù)輸入流及其派生類:

  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 

文字列數(shù)據(jù)輸出流及其派生類:

  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)之間的關(guān)系可以用下圖來表示:

 

 

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及其數(shù)據(jù)類型相關(guān)的子類。

java.nio.channels

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

java.nio.charset

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

NIO接口/類的層次結(jié)構(gòu):

  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é)構(gòu)圖:

 

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

◆ 理解數(shù)據(jù)流

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

◆ 的標(biāo)準(zhǔn)數(shù)據(jù)流

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

標(biāo)準(zhǔn)輸入studin,對象是鍵盤。

標(biāo)準(zhǔn)輸出stdout,對象是屏幕。

標(biāo)準(zhǔn)錯誤輸出stderr,對象也是屏幕。

例 8.1 從鍵盤輸入字符。

本例用System.in.read(buffer)從鍵盤輸入一行字符,存儲在緩沖區(qū)buffer中,count保存實際讀入的字節(jié)個數(shù),再以整數(shù)和字符兩種方式輸出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); //讀取標(biāo)準(zhǔn)輸入流  
  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包中的數(shù)據(jù)流及文件類

字節(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 異步讀取網(wǎng)絡(luò)數(shù)據(jù)
  4. Java NIO(異步IO)Socket通信例子
  5. 影響Java NIO框架性能的因數(shù)
責(zé)任編輯:林師授 來源: aviva的博客
相關(guān)推薦

2009-08-19 10:41:12

Java輸入數(shù)據(jù)流

2016-11-14 19:01:36

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

2020-02-06 19:12:36

Java函數(shù)式編程編程語言

2022-03-18 08:57:17

前端數(shù)據(jù)流選型

2017-11-16 19:26:34

海量數(shù)據(jù)算法計算機

2021-10-27 10:43:36

數(shù)據(jù)流中位數(shù)偶數(shù)

2011-04-14 14:43:38

SSISTransformat

2012-07-30 08:31:08

Storm數(shù)據(jù)流

2019-12-19 14:38:08

Flink SQL數(shù)據(jù)流Join

2011-04-19 09:18:02

SSIS數(shù)據(jù)轉(zhuǎn)換

2013-10-21 10:58:50

微軟大數(shù)據(jù)SQL Server

2009-07-15 09:06:11

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

2014-12-02 10:56:47

TCPIP交互數(shù)據(jù)流

2014-02-11 08:51:15

亞馬遜PaaSAppStream

2021-06-29 19:24:42

數(shù)據(jù)流數(shù)據(jù)排序

2020-08-20 11:24:31

物聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2023-07-24 08:20:11

StreamJava方式

2023-07-26 00:20:20

Java 8數(shù)組方式

2023-08-18 09:29:59

Java數(shù)據(jù)流

2019-06-18 13:51:08

大數(shù)據(jù)流處理新興市場
點贊
收藏

51CTO技術(shù)棧公眾號