`

java的InputStream和OutputStream的理解

阅读更多
http://blog.csdn.net/liu251/article/details/3860578

1、在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)
2、任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象
既然它能产生出数据,我们就可以将数据取出,java对封装的通用方法就read()方法了--(出水龙头)
3、任何有能力接收数据源(流)的javaio对象我们就可以看作是一个OutputStream对象
同样,它能接收数据,我们就可以调用它的write方法,来让它接收数据--(进水龙头了,呵呵)
4、当然,我们可以在Inputstream和OutputStream数据源的基础上,从实际需要触发,
来重新封装出不同性能机制的输入、输出流了,java.io包中提供了很丰富的输入、输出流对象,如:
基于字节流的stream:
DataOutputStream----DataInputStream:
FileOutputStream-----FileInputStream:
.............等,可以用InputStream和OutputStream从JDK文档查阅
基于字符流的stream(典型的以write和reader来标识的):
FileWriter---FileReader:
StringWriter---StringReader:
.........等,你自己可以用Writer和Reader从JDK文档里头查看说明
stream应该是水龙头里的水资源,
InputStream:是一个出水龙头(把水封装在里头)的一个实物对象,该对象的read方法呢,就想成这个
出水龙头这一机制对象的开关钮,你read或openStream(其他对象包容InputStream对象的对象方法)一下呢,就等于打开了出水龙头的按钮,水就出来了,里头封装的水是什么性质的呢,你就用相应的容器来装,如string或byte[].....
OutputStream:你就在InputStream基础上反着想就ok了
-------------------------------------------------------------------------------------------------------------------------
OutputStream
(1)输出数据
   void write(int b)往流中写一个字节b
   void write(byte b[])往流中写一个字节数组b
   void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节写入流中
(2)
   flush()刷空输出流,并输出所有被缓存的字节
           由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。
(3)关闭流
   close()流操作完毕后必须关闭。
------------------------------------------------------------------------------------------------------------------------
InputStream
(1)从流中读取数据
   int read() 读取一个字节,返回值为所读得字节
   int read(byte b[]) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的
                      字节的数量。
   int read(byte b[] ,int off,int len)读取len个字节,放置到以下标off开始字节数组b中,返回值为实际
                                       读取的字节的数量。
   int available() 返回值为流中尚未读取的字节的数量。
   long skip(long n);读指针跳过n个字节不读,返回值为实际跳过的字节数量
(2)关闭流
   close() 流操作完毕后必须关闭
(3)使用输入流中的标记
   void mark(int readlimit)纪录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后
                           所标记的指针位置才实效。
   void reset() 把读指针重新指向用mark方法所记录的位置
   boolean markSupported() 当前的流是否支持读指针的记录功能。
-----------------------------------------------------------------------------------------------------------------------

Java IO通过Stream(流)来实现。关于流,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的等。就好像管道里面可以流动水,也可以流动石油一样。

而对应于流还有一个概念:输入、输出设备。这些设备可以是磁盘文件、键盘(输入设备)、显示器(输出设备)、打印机(输出设备)、网络套接字等等。





下面,我们就来了解“流”。

Java中定义了两种类型的流:字节型,和字符型。

字节流:处理字节的输入和输出。包括读写二进制数据等方面的内容。

字符流:处理字符的输入和输出。他采用的是Unicode编码,可以实现国际化。使用字符流的另外一个好处就是:字符流比字节流更有效率。





字节流:

字节流包含两个顶层抽象类:InputStream和OutputStream。

1:字节流的两个顶层类是抽象类,分别是:InputStream和OutputStream。



2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。





下面简单介绍字节流的几个常用子类:::

字节流类


功能简单介绍

DataInputStream


包含了读取Java标准数据类型的输入流

DataOutputStream


包含了写Java标准数据类型的输出流

ByteArrayInputStream


从字节数组读取的输入流

ByteArrayOutputStream


写入字节数组的输出流

FileInputStream


从文件读入的输入流

FileOutputStream


写入文件的输出流

PrintStream


包含最常见的Print()和Println()的输出流

PushbackInputStream


返回一个字节到输入流,主要用于编译器的实现

PipedInputStream


输出管道

PipedOutputStream


输入管道

SequenceInputStream


将n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile


随机访问文件

BufferInputStream


缓冲输入流

BufferOutputStream


缓冲输出流

FilterInputStream


实现了InputStream Interface

FilterOutputStream


实现了OutputStream Interface

InputStream


抽象类,描述流的输入

OutputStream


抽象类,描述流的输入

抽象类InputStream和OutpurStream定义了实用的方法,其中最主要的是read()和

write()。这两个方法在InputStream和OutputStream中声明为抽象方法,由子流类overwrite实现。

2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。





下面简单介绍字节流的几个常用子类:::

字节流类


功能简单介绍

DataInputStream


包含了读取Java标准数据类型的输入流

DataOutputStream


包含了写Java标准数据类型的输出流

ByteArrayInputStream


从字节数组读取的输入流

ByteArrayOutputStream


写入字节数组的输出流

FileInputStream


从文件读入的输入流

FileOutputStream


写入文件的输出流

PrintStream


包含最常见的Print()和Println()的输出流

PushbackInputStream


返回一个字节到输入流,主要用于编译器的实现

PipedInputStream


输出管道

PipedOutputStream


输入管道

SequenceInputStream


将n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile


随机访问文件

BufferInputStream


缓冲输入流

BufferOutputStream


缓冲输出流

FilterInputStream


实现了InputStream Interface

FilterOutputStream


实现了OutputStream Interface

InputStream


抽象类,描述流的输入

OutputStream


抽象类,描述流的输入

抽象类InputStream和OutpurStream定义了实用的方法,其中最主要的是read()和

write()。这两个方法在InputStream和OutputStream中声明为抽象方法,由子流类overwrite实现
分享到:
评论

相关推荐

    InputStream与OutputStream及File间互转

    在Java编程语言中,`InputStream`和`OutputStream`是处理数据流的核心类,它们属于Java的I/O(Input/Output)框架。`File`类则用于处理文件操作,如读写、创建、删除等。理解如何在这些对象之间进行转换是Java开发中...

    将输出流OutputStream转化为输入流InputStream的方法

    首先,我们需要理解`OutputStream`和`InputStream`这两个核心的I/O类。`OutputStream`是用于写出数据到目的地的流,而`InputStream`则是用于读取数据的流。在Java中,它们是Java.io包下的基础类,提供了多种子类来...

    java 文件存储 Inputstream outputstream reader writer的用法

    在Java编程中,文件操作是不可或缺的一部分,尤其是在处理数据存储和读取时。`InputStream`、`OutputStream`、`Reader`和`Writer`是Java ...不断实践这些基本的IO操作,将有助于你更好地理解和掌握Java的文件处理能力。

    Java基础核心+InputStream输入流+OutputStream输出流

    本教程将聚焦于Java的基础核心,以及两个重要的I/O(输入/输出)流类——InputStream和OutputStream,它们在文件操作中扮演着关键角色。 InputStream和OutputStream是Java.io包下的抽象类,是所有字节流的基类。...

    java.io.Reader 和 java.io.InputStream 的区别

    此外,值得注意的是,虽然`InputStream`和`OutputStream`以及`Reader`和`Writer`之间存在类似的关系,但在设计上,`InputStream`和`OutputStream`更偏向于底层数据传输,而`Reader`和`Writer`则提供了更高级的字符...

    java_io.doc

    1. **InputStream 和 OutputStream**: 这是Java I/O的基础,分别代表了数据的输入和输出。InputStream用于读取原始字节流,而OutputStream用于写入原始字节流。例如,FileInputStream和FileOutputStream分别用于从...

    IO流体系继承结构图_动力节点Java学院整理

    InputStream和OutputStream是抽象类,它们提供了基本的读写操作,如read()和write()方法。原始处理器(适配器)是用来将不同类型的输入/输出资源转换为InputStream或OutputStream的类。例如,ByteArrayInputStream...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    字节流包括 InputStream 和 OutputStream 两种,前者用于输入,后者用于输出。 DataInputStream 和 DataOutputStream 是 java.io 中的高级字节流,提供了基本类型的读取和写入操作。 五、java.io 之字符流 字符流...

    轻松学Java之Java的输入输出流优秀PPT.pptx

    Java中的输入输出流可以通过多种方式来实现,例如使用InputStream、OutputStream、Reader、Writer等类来读取和写入数据。 在Java中,输入输出流的处理是非常重要的,它可以帮助我们更好的处理数据的输入和输出操作...

    Java聊天程序实现代码

    实现一个Java聊天程序涉及对Java网络编程的理解,包括使用ServerSocket和Socket进行通信,以及通过InputStream和OutputStream传递数据。服务端负责监听连接并处理客户端的请求,而客户端则发起连接并向服务器发送...

    java socket通信实现

    3. InputStream和OutputStream:Socket提供的InputStream和OutputStream是处理数据传输的基础。服务端和客户端可以通过这些流对象读写数据,实现双方的数据交换。 三、服务端实现 服务端程序主要包含以下步骤: 1. ...

    Java Socket实现网络通话源码程序

    - **数据传输**:客户端和服务器通过各自的InputStream和OutputStream进行双向数据传输。 7. **异常处理**: - 在进行Socket编程时,需要捕获并处理可能的IOException,例如连接失败、网络中断等。 8. **关闭...

    java IO流+socket源码 实现简单文本传输

    - 通过Socket实例获取InputStream和OutputStream,用于读取和写入数据。 - 使用BufferedReader和PrintWriter对输入输出流进行包装,以方便文本操作。 - 在循环中,读取客户端发送的数据,处理后反馈给客户端,...

    第一行代码Java源代码第11章课程代码JavaIO编

    在第11章,作者深入讲解了Java IO系统,帮助读者理解和掌握如何在Java中有效地进行文件操作、流处理和数据传输。 在Java IO编程中,我们首先会接触到`java.io`包,这个包包含了众多类和接口,如InputStream、...

    使用Java理解程序逻辑第8章.zip

    通过这些结构,我们可以根据不同的条件执行不同的代码块,或者重复执行特定任务,这些都是理解和构建复杂程序的基础。 其次,JavaSE中的类和对象是面向对象编程的核心。类是创建对象的蓝图,而对象是程序中的实例,...

    实验八 Java网络编程.7z

    3. **数据传输**:在Java中,数据通常通过InputStream和OutputStream进行读写,这包括BufferedInputStream和BufferedOutputStream以提高效率,以及DataInputStream和DataOutputStream来方便地读写基本数据类型。...

    Java-程序设计基础第章-Java语言的输入输出与文件处理完整版资料.pptx

    Java语言的输入输出(I/O)系统是其编程基础的重要组成部分,主要涉及如何处理程序与外部设备,如硬盘、网络、标准输入输出等之间的...理解和熟练掌握这个系统对于编写能够高效、可靠地处理数据交换的Java程序至关重要。

    java做的聊天程序

    2. **InputStream和OutputStream**:在网络通信中,数据的传输通常依赖于InputStream和OutputStream。服务器和客户端之间通过输入流和输出流读写数据,实现信息的交换。 **二、服务器端实现** 1. **创建...

Global site tag (gtag.js) - Google Analytics