Java的标准数据流有哪些

发布时间:2022-01-06 20:15:12 作者:iii
来源:亿速云 阅读:149

这篇文章主要讲解了“Java的标准数据流有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的标准数据流有哪些”吧!

Java输入输出(I/O)API是Java里最重要的API之一。Java I/O提供了许多API提供对文件,内存,socket的读写。

Java里的流(Stream)概念:

流是一种有序的字节数据对象。流又分为输入流(InputStream)和输出流(OutputStream)。输入流从外部资源(文件,内存,socket等)读入字节数据到Java对象;输出流则把Java对象(字节数据等)写入到外部资源。

所有Java I/O都可归类为以下两种:

1,字节数据输入输出I/O

2,文字列数据输入输出I/O

所有的字节数据输入输出I/O都继承自java.io.InputStream和java.io.OutputStream接口。

字节数据输入流及其派生类:

java.io.InputStream   +--java.io.ByteArrayInputStream  +--java.io.BufferedInputStream  +--java.io.DataInputStream  +--java.io.FileInputStream  +--java.io.FilterInputStream  +--java.io.ObjectInputStream  +--java.io.PipedInputStream  +--java.io.PushbackInputStream  +--java.io.SequenceInputStream  +--java.io.StringBufferInputStream

字节数据输出流及其派生类:

java.io.OutputStream  +--java.io.BufferedOutputStream  +--java.io.ByteArrayOutputStream  +--java.io.DataOutputStream  +--java.io.FileOutputStream  +--java.io.FilterOutputStream  +--java.io.ObjectOutputStream  +--java.io.PipedOutputStream

所有的文字列数据输入输出I/O都继承自java.io.Reader和java.io.Writer接口。

文字列数据输入流及其派生类:

java.io.Reader  +--java.io.BufferedReader  +--java.io.CharArrayReader  +--java.io.FileReader  +--java.io.FilterReader  +--java.io.InputStreamReader  +--java.io.LineNumberReader  +--java.io.PipedReader  +--java.io.PushbackReader  +--java.io.StringReader

文字列数据输出流及其派生类:

java.io.Writer  +--java.io.BufferedWriter  +--java.io.CharArrayWriter  +--java.io.FilterWriter  +--java.io.OutputStreamWriter  +--java.io.FileWriter  +--java.io.PipedWriter  +--java.io.PrintWriter  +--java.io.StringWriter

它们(java.io)之间的关系可以用下图来表示:

Java的标准数据流有哪些

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基于缓冲区,并能提供非阻塞(non-blocking)IO操作。

NIO主要包:

java.nio

定义了Buffer及其数据类型相关的子类。

java.nio.channels

定义了高速文件处理/socket通信处理等I/O处理的Channel接口以及这些接口在文件系统和网络通信等上的实现类。同时可以通过Selector类,提供了进行非阻塞I/O操作的方法。该包是NIO API的核心包。

java.nio.charset

定义了字符编码和解码处理类。

NIO接口/类的层次结构:

java.nio.ByteBuffer  java.nio.channels.Channel  +--java.nio.channels.ServerSocketChannel  +--java.nio.channels.ReadableByteChannel  +--java.nio.channels.ScatteringByteChannel  +--java.nio.channels.ByteChannel  +--java.nio.channels.WritableByteChannel  +--java.nio.channels.ByteChannel  +--java.nio.channels.GatheringByteChannel  java.nio.channels.Slector  java.nio.channels.ScatteringByteChannel, ByteChannel, GatheringByteChannel  +--java.nio.channels.FileChannel  +--java.nio.channels.SocketChannel  +--java.nio.channels.DatagramChannel  java.nio.charset.Charset  java.nio.charset.CharsetEncoderjava.nio.charset.CharsetDecoder

NIO层次结构图:

Java的标准数据流有哪些

***节 数据流的基本概念

◆ 理解数据流

流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数人流,而屏幕则只是一个输出流。

◆ 的标准数据流

标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:

标准输入studin,对象是键盘。

标准输出stdout,对象是屏幕。

标准错误输出stderr,对象也是屏幕。

例 8.1 从键盘输入字符。

本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,count保存实际读入的字节个数,再以整数和字符两种方式输出buffer中的值。Read方法在java.io包中,而且要抛出IOException异常。程序如下:

import java.io.*;  public class Input1  {  public static void main(String args[]) throws IOException  {   System.out.println("Input: ");  byte buffer[] = new byte[512]; //输入缓冲区  int count = System.in.read(buffer); //读取标准输入流  System.out.println("Output: ");  for (int i=0;i<COUNT;I++) 输出buffer元素值  {  System.out.print(" "+buffer[i]);  }  System.out.println();  for (int i=0;i<COUNT;I++) 按字符方式输出buffer  {  System.out.print((char) buffer[i]);  }  System.out.println("count = "+ count); //buffer实际长度  }  }

程序中,main方法采用throws子句抛出IOException异常交由系统处理。

Java.io包中的数据流及文件类

字节流:

从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。

字符流:

从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位

感谢各位的阅读,以上就是“Java的标准数据流有哪些”的内容了,经过本文的学习后,相信大家对Java的标准数据流有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. java _io_数据流
  2. 如何在java中使用数据流

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:MDK使用技巧是什么

下一篇:如何利用ngrok传播样本挖矿

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》