`
univasity
  • 浏览: 809893 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对Java的I/O流理解

    博客分类:
  • J2me
阅读更多

这是很久前另一个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流的处理

    Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...

    java基础之I/O流

    通过学习和理解这些知识点,初学者能够熟练地使用Java I/O流进行各种数据操作,无论是简单的文件读写,还是复杂的网络数据交换,都能游刃有余。在实际编程中,根据需求选择合适的流类型和组合,能有效地提升程序的...

    Java I/O, 2nd Edition

    这本书在第二版中对Java I/O进行了更新,涵盖了从Java 5到Java 8的最新发展,包括NIO.2(New I/O 2)框架的介绍。 1. **Java I/O基础**:书中首先介绍了Java I/O的基本概念,如流、缓冲区、字符编码和文件操作。流...

    Java I/O流通讯录

    Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...

    Java 新I/O

    Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...

    Java I/O 过滤流-带格式的读写操作

    过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码转换、数据压缩等。本篇文章将深入探讨Java I/O中的过滤流,以及...

    Java I/O编程 java

    在Java I/O编程中,理解不同类型的流及其用途至关重要。字节流和字符流分别处理二进制和文本数据,过滤流提供了额外的功能,管道流实现了线程间的通信,对象流使得对象可以持久化。掌握这些基础,开发者能够有效地...

    Java I/O, NIO and NIO.2

    NIO.2,又称为New I/O 2或Java NIO 2,是在Java 7中引入的进一步扩展,主要增加了文件系统操作的支持,包括异步I/O操作、文件通道、文件锁定以及对符号链接的支持。AsynchronousFileChannel是NIO.2中新增的异步I/O...

    java I/O类的使用

    Java 1.0 和 1.1 中的I/O类主要是基于两个基础类:`InputStream`和`OutputStream`,它们处理字节流。`InputStream`家族包括了如`ByteArrayInputStream`、`FileInputStream`等,它们分别从字节数组或文件中读取数据。...

    深入分析 Java I/O 的工作机制(转载)

    Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...

    关于I/O流读写文件

    在Java中,I/O流是通过流的概念来实现的,流是一种抽象表示,用于表示输入设备或输出设备。根据不同的功能,I/O流可以分为输入流和输出流两种。 输入流 输入流是用于读取数据的流,常用的输入流有InputStream、...

    Java I/O系统

    Java I/O系统是Java编程语言中的一个重要组成部分...理解并熟练掌握Java I/O,对于编写高效、健壮的Java应用程序至关重要。通过不断实践和学习,开发者可以更好地利用Java I/O来解决实际问题,提升代码的性能和可靠性。

    java阻塞i/o与非阻塞i/o控制

    在Java编程环境中,I/O(输入/输出)操作是程序与外部世界交互的关键部分,包括读取文件、网络通信等。对于高效的系统设计,理解...阅读"解析Java中的阻塞I_O与非阻塞I_O控制.pdf"文件,将能进一步深化对此主题的理解。

    java i/0习题

    Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统...在学习过程中,不断实践和总结,理解不同流类的特性和适用场景,是提升Java I/O技能的关键。

    Java I/O层次结构详解

    - **流(Stream)**:Java I/O中的流分为字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,如InputStream和OutputStream家族;字符流处理Unicode字符,如Reader和Writer家族。 - **...

    Javaio流思维导图

    Java I/O 流是Java平台中的一个重要组成部分,它在处理数据输入和输出方面扮演着核心角色。I/O流系统提供了一种标准化的方式来读取、写入数据,无论是从磁盘、网络、内存还是其他类型的输入输出设备。在这个思维导图...

    Java I/O总结

    1. **流的层次结构**:Java I/O流按照功能的不同分为基本流和高级流。基本流如`FileInputStream`、`FileOutputStream`等,主要用于直接与设备交互;高级流如`BufferedReader`、`PrintWriter`等,则是在基本流的基础...

    怎么使用I/O编程???

    【I/O编程基础】 在Java编程中,I/O(Input/Output)处理是与外部世界交互的关键技术,涉及文件读写、网络通信等场景。I/O的核心思想是通过流(Stream)来...理解和掌握I/O编程,对任何Java开发者来说都是至关重要的。

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O

    Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...

    Java课程设计报告书-学生版-1_I/O流与文件课程设计_

    本课程设计报告书——“Java课程设计报告书-学生版-1_I/O流与文件课程设计_”旨在帮助学生深入理解并掌握如何在Java中进行文件操作,通过实际的实验案例来学习文件对象和流类的应用。 一、Java I/O流概述 Java的I/O...

Global site tag (gtag.js) - Google Analytics