这是很久前另一个BLOG上的,现在不用了。转过来吧,方便查看...
输出流
流程示意图:
不同的情况:
1.
调用
write( )
方法,把数据写入缓冲区,
i
如果缓冲区被填满
,将自动执行
2,3
步,把数据转换为字节
,写入到下一个缓冲区
;
(1)
如果此缓冲区又被填满,则自动执行第
4
步,把转换好的数据保存到缓冲数组
;
(2)
如果未被填满则不会执行第
4
步。
<
将循环执行,未写入的数据源
继续写入缓冲区,直到数据被全部写入
>
ii
如果未被填满
,则不执行
2
,
3
步。
2.
当出现未被填满而不发送的情况,可以调用
flush( )
方法进行强制刷出操作。
API
中的一些定义:
ByteArrayOutputStream
1.
此类实现了一个输出流,其中的数据被写入一个 byte
数组。
2.
缓冲区会随着数据的不断写入而自动增长。
3.
可使用
toByteArray()
和
toString()
获取数据。
OutputStreamWriter
1.
OutputStreamWriter
是字符流通向字节流的桥梁:可使用指定的
charset
将要写入流中的字符编码成字节。
2.
每次调用
write()
方法都会导致在给定字符(或字符集)上调用编码转换器。
3.
传递给
write()
方法的字符没有缓冲。
BufferedWriter
1.
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
2.
可以指定缓冲区的大小,或者接受默认的大小。
还有就是
flush( )
方法的定义——
1.
刷新该流的缓冲。
2.
如果该流已保存缓冲区中各种
write()
方法的所有字符,则立即将它们写入预期目标。
3.
然后,如果该目标是另一个字符或字节流,则将其刷新。
4.
因此,一次
flush()
调用将刷新
Writer
和
OutputStream
链中的所有缓冲区。
*
需要注意的是,
ByteArrayOutputStream
中的数组缓冲区初始大小为
32
字节,随后会按数据大小自动进行调整。
输入流
流程示意图:
1.
把数据源转换为字节数组;
2.
把转换好的字节缓冲数组作为参数源传进
ByteArrayInputStream
流;
3.
与输出流不同的是,第
3
,
4
,
5
步会自动执行,把数组传进下一个缓冲区;
4.
等到调用
read( )
方法,把缓冲中数据读出
。
API
中的一些定义:
ByteArrayInputStream
1.ByteArrayInputStream
包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
2.
内部计数器跟
踪
read
方法要提供的下一个字节。
InputStreamReader
1.
InputStreamReader
是字节流通向字符流的桥梁:它使用指定的
charset
读取字节并将其解码为字符。
2.
每次调用 InputStreamReader
中的一个 read()
方法都会导致从底层输入流读取一个或多个字节。
3.
要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
BufferedReader
1.
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
2.
可以指定缓冲区的大小,或者可使用默认的大小。
close( )
方法——
1.
关闭该流并释放与之关联的所有资源。
2.
在关闭该流后,再调用
read()
、
ready()
、
mark()
、
reset()
或
skip()
将抛出
IOException
。
3.
关闭以前关闭的流无效。
分享到:
相关推荐
Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...
通过学习和理解这些知识点,初学者能够熟练地使用Java I/O流进行各种数据操作,无论是简单的文件读写,还是复杂的网络数据交换,都能游刃有余。在实际编程中,根据需求选择合适的流类型和组合,能有效地提升程序的...
这本书在第二版中对Java I/O进行了更新,涵盖了从Java 5到Java 8的最新发展,包括NIO.2(New I/O 2)框架的介绍。 1. **Java I/O基础**:书中首先介绍了Java I/O的基本概念,如流、缓冲区、字符编码和文件操作。流...
Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...
Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...
过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码转换、数据压缩等。本篇文章将深入探讨Java I/O中的过滤流,以及...
在Java I/O编程中,理解不同类型的流及其用途至关重要。字节流和字符流分别处理二进制和文本数据,过滤流提供了额外的功能,管道流实现了线程间的通信,对象流使得对象可以持久化。掌握这些基础,开发者能够有效地...
NIO.2,又称为New I/O 2或Java NIO 2,是在Java 7中引入的进一步扩展,主要增加了文件系统操作的支持,包括异步I/O操作、文件通道、文件锁定以及对符号链接的支持。AsynchronousFileChannel是NIO.2中新增的异步I/O...
Java 1.0 和 1.1 中的I/O类主要是基于两个基础类:`InputStream`和`OutputStream`,它们处理字节流。`InputStream`家族包括了如`ByteArrayInputStream`、`FileInputStream`等,它们分别从字节数组或文件中读取数据。...
Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...
在Java中,I/O流是通过流的概念来实现的,流是一种抽象表示,用于表示输入设备或输出设备。根据不同的功能,I/O流可以分为输入流和输出流两种。 输入流 输入流是用于读取数据的流,常用的输入流有InputStream、...
Java I/O系统是Java编程语言中的一个重要组成部分...理解并熟练掌握Java I/O,对于编写高效、健壮的Java应用程序至关重要。通过不断实践和学习,开发者可以更好地利用Java I/O来解决实际问题,提升代码的性能和可靠性。
在Java编程环境中,I/O(输入/输出)操作是程序与外部世界交互的关键部分,包括读取文件、网络通信等。对于高效的系统设计,理解...阅读"解析Java中的阻塞I_O与非阻塞I_O控制.pdf"文件,将能进一步深化对此主题的理解。
Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统...在学习过程中,不断实践和总结,理解不同流类的特性和适用场景,是提升Java I/O技能的关键。
- **流(Stream)**:Java I/O中的流分为字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,如InputStream和OutputStream家族;字符流处理Unicode字符,如Reader和Writer家族。 - **...
Java I/O 流是Java平台中的一个重要组成部分,它在处理数据输入和输出方面扮演着核心角色。I/O流系统提供了一种标准化的方式来读取、写入数据,无论是从磁盘、网络、内存还是其他类型的输入输出设备。在这个思维导图...
1. **流的层次结构**:Java I/O流按照功能的不同分为基本流和高级流。基本流如`FileInputStream`、`FileOutputStream`等,主要用于直接与设备交互;高级流如`BufferedReader`、`PrintWriter`等,则是在基本流的基础...
【I/O编程基础】 在Java编程中,I/O(Input/Output)处理是与外部世界交互的关键技术,涉及文件读写、网络通信等场景。I/O的核心思想是通过流(Stream)来...理解和掌握I/O编程,对任何Java开发者来说都是至关重要的。
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
本课程设计报告书——“Java课程设计报告书-学生版-1_I/O流与文件课程设计_”旨在帮助学生深入理解并掌握如何在Java中进行文件操作,通过实际的实验案例来学习文件对象和流类的应用。 一、Java I/O流概述 Java的I/O...