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实现。
<!--EndFragment-->
相关推荐
在Java编程语言中,`InputStream`和`OutputStream`是处理数据流的核心类,它们属于Java的I/O(Input/Output)框架。`File`类则用于处理文件操作,如读写、创建、删除等。理解如何在这些对象之间进行转换是Java开发中...
首先,我们需要理解`OutputStream`和`InputStream`这两个核心的I/O类。`OutputStream`是用于写出数据到目的地的流,而`InputStream`则是用于读取数据的流。在Java中,它们是Java.io包下的基础类,提供了多种子类来...
在Java编程中,文件操作是不可或缺的一部分,尤其是在处理数据存储和读取时。`InputStream`、`OutputStream`、`Reader`和`Writer`是Java ...不断实践这些基本的IO操作,将有助于你更好地理解和掌握Java的文件处理能力。
本教程将聚焦于Java的基础核心,以及两个重要的I/O(输入/输出)流类——InputStream和OutputStream,它们在文件操作中扮演着关键角色。 InputStream和OutputStream是Java.io包下的抽象类,是所有字节流的基类。...
此外,值得注意的是,虽然`InputStream`和`OutputStream`以及`Reader`和`Writer`之间存在类似的关系,但在设计上,`InputStream`和`OutputStream`更偏向于底层数据传输,而`Reader`和`Writer`则提供了更高级的字符...
1. **InputStream 和 OutputStream**: 这是Java I/O的基础,分别代表了数据的输入和输出。InputStream用于读取原始字节流,而OutputStream用于写入原始字节流。例如,FileInputStream和FileOutputStream分别用于从...
InputStream和OutputStream是抽象类,它们提供了基本的读写操作,如read()和write()方法。原始处理器(适配器)是用来将不同类型的输入/输出资源转换为InputStream或OutputStream的类。例如,ByteArrayInputStream...
字节流包括 InputStream 和 OutputStream 两种,前者用于输入,后者用于输出。 DataInputStream 和 DataOutputStream 是 java.io 中的高级字节流,提供了基本类型的读取和写入操作。 五、java.io 之字符流 字符流...
Java中的输入输出流可以通过多种方式来实现,例如使用InputStream、OutputStream、Reader、Writer等类来读取和写入数据。 在Java中,输入输出流的处理是非常重要的,它可以帮助我们更好的处理数据的输入和输出操作...
实现一个Java聊天程序涉及对Java网络编程的理解,包括使用ServerSocket和Socket进行通信,以及通过InputStream和OutputStream传递数据。服务端负责监听连接并处理客户端的请求,而客户端则发起连接并向服务器发送...
3. InputStream和OutputStream:Socket提供的InputStream和OutputStream是处理数据传输的基础。服务端和客户端可以通过这些流对象读写数据,实现双方的数据交换。 三、服务端实现 服务端程序主要包含以下步骤: 1. ...
- **数据传输**:客户端和服务器通过各自的InputStream和OutputStream进行双向数据传输。 7. **异常处理**: - 在进行Socket编程时,需要捕获并处理可能的IOException,例如连接失败、网络中断等。 8. **关闭...
Java 文件与数据流 Java 文件与数据流是 Java 语言中的一种基本概念,它们是 Java 编程中最基本的输入输出方式。下面是关于 Java 文件与数据...理解 Java 的标准输入输出、数据流、字节流和字符流是 Java 编程的基础。
- 通过Socket实例获取InputStream和OutputStream,用于读取和写入数据。 - 使用BufferedReader和PrintWriter对输入输出流进行包装,以方便文本操作。 - 在循环中,读取客户端发送的数据,处理后反馈给客户端,...
总结来说,Java中InputStream、String和File的相互转化是编程中常见的操作,理解并掌握这些转换方法对于提升开发效率和代码质量至关重要。在进行转换时,要结合具体场景,选择合适的方法,同时注意性能优化和资源...
在第11章,作者深入讲解了Java IO系统,帮助读者理解和掌握如何在Java中有效地进行文件操作、流处理和数据传输。 在Java IO编程中,我们首先会接触到`java.io`包,这个包包含了众多类和接口,如InputStream、...
通过这些结构,我们可以根据不同的条件执行不同的代码块,或者重复执行特定任务,这些都是理解和构建复杂程序的基础。 其次,JavaSE中的类和对象是面向对象编程的核心。类是创建对象的蓝图,而对象是程序中的实例,...
3. **数据传输**:在Java中,数据通常通过InputStream和OutputStream进行读写,这包括BufferedInputStream和BufferedOutputStream以提高效率,以及DataInputStream和DataOutputStream来方便地读写基本数据类型。...
Java语言的输入输出(I/O)系统是其编程基础的重要组成部分,主要涉及如何处理程序与外部设备,如硬盘、网络、标准输入输出等之间的...理解和熟练掌握这个系统对于编写能够高效、可靠地处理数据交换的Java程序至关重要。
2. **InputStream和OutputStream**:在网络通信中,数据的传输通常依赖于InputStream和OutputStream。服务器和客户端之间通过输入流和输出流读写数据,实现信息的交换。 **二、服务器端实现** 1. **创建...