一、
I/O流分类
1.输入流(Input Stream) 和输出流(Output Stream)
2.节点流(Node Stream) 和处理流(Processing Stream)
3.字符流(Character Stream)和字节流(Byte Stream)
二、
输入流和输出流
按照数据流动的方向,Java流可分为输入流(Input Stream)和输出流(Output Stream)
1.输入流只能从中读取数据,而不能向其写出数据
2.输出流则只能向其写出数据,而不能从中读取数据
3.特例:java.io.RandomAccessFile类。---(可以在文件的任何位置存取操作)
(一般人是站在程序的角度,比如数据从外界传递到程序中,那么我们称为数据的输入,比如我们可以读取从
键盘输入的数据,或者说从键盘输入数据到程序中)
三、
节点流和处理流
根据数据流所关联的是数据源还是其他数据流,可分为节点流(Node Stream)和处理流(Processing Stream)
1.节点流直接连接到数据源(FileReader)
2.处理流是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现增强的数据读/写功能,处理流并不直接连到数据源(BufferedReader)
四、
字符流和字节流
a.按传输数据的“颗粒大小”划分,可分为字符流(Character Stream)和字节流(Byte Stream)
1.字符流以字符为单位进行数据传输,每次传送一个或多个字符
2.字节流以字节为单位进行数据传输,每次传送一个或多个字节
b.Java命名惯例:
凡是以InputStream或OutputStream结尾的类型均为字节流
凡是以Reader或Writer结尾的均为字符流
五、
常用I/O流类型(1)
a.FileInputStream/FileOutputStream
FileInputStream用于读取本地文件中字节数据,
FileOutputStream用于将字节数据写出到文件 -------------------即可以复制文本文件,也可以复制二进制文件(图片,视频等)(因为他们操作的是字节)
b.FileReader/FileWriter
FileReader用于以字符为单位读取文本文件,
FileWriter类用于将字符数据写出到文本文件中
c.BufferedReader/BufferedWriter
BufferedReader用于缓冲读取字符,
BufferedWriter则提供字符的缓冲写出功能
六、
常用I/O流类型(2)
a.InputStreamReader(是字节流通向字符流的桥梁)
1.InputStreamReader可封装字节输入流并从中读取字节数据,然后将之转换为字符
2.转换时所使用的字符编码可以在构造方法中显式指定,也可以使用平台的默认字符编码
b.OutputStreamWriter(是字符流通向字节流的桥梁)
1.OutputStreamWriter把字符转化为字节并写出到它所封装的字节输出流
2.转换时所使用的字符编码可以在构造方法中显式指定,也可以使用平台的默认字符编码
七、
常用I/O流类型(3)
a.PrintStream
PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型数据(而不仅限于byte型)的格式化表示形式。PrintStream的方法从不抛出IOExecption。
b.PrintWriter
1.PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOExecption
2.与PrintStream的区别:作为处理流使用时,PrintStream只能封装OutputStreamWriter类型的字节流而PrintWriter既可以封装OutputStreamWriter,还能够封装Writer类型字符输出流并增强其功能
八、
常用I/O流类型(4)
DataInputStream/DataOutputStream
1.二者分别实现了DataInput/DataOutput接口
2.DataInputStream能够以一种与机器无关的方式,直接从底层字节输入流读取Java基本类型和String类型的数据
3.DataOutputStream则能够直接将Java基本类型和String类型数据写出到其他的字节输出流
九、
常用I/O流类型(5)
a.CharArrayReader实现了一个可用作字符输入流的字符缓冲区
b.CharArrayWriter实现了一个可当作Writer使用的字符输出缓冲区
十、
实现对象序列化
a.要序列化一个对象,其所属的类必须实现以下两种接口之一:
java.io.Serializable java.io.Externalizable
b.java.io.ObjectOutputStream/ObjectInputStream类分别提供了对象的序列化和反序列化功能
注意:一般在实现Serializable接口的类中添加空的构造方法
十一、
对象序列化过程中的数据保护
a.标记性接口Serializable(标记性接口没有实际的功能,主要用于区分)
b.在对象序列化过程中,其所属类的static属性的方法代码不会被序列化处理
c.对于个别不希望被序列化的非static属性,可以在属性声明时使用transient关键字进行表明
补充知识点:
通道(Channel)是NIO中的另一种重要对象,通过它可以实现数据的读入和写出操作,与先前的“流”相比,
其不同之处在通道是双向的(类似于RandomAccessFile流),而普通的I/O流只能单向地传输数据,
这使得通道可以比流更好地反映底层操作系统的真实情况(底层操作系统中数据的传输通道都是双向的)。
分享到:
相关推荐
《Java I/O, 2nd Edition》是一本深入探讨Java输入/输出系统的重要书籍,针对Java平台的I/O系统提供了全面且深入的指南。这本书在第二版中对Java I/O进行了更新,涵盖了从Java 5到Java 8的最新发展,包括NIO.2(New ...
这是一个关于Java I/O的知识点总结,希望大家共同学习,共同进步
Java I/O类库是Java平台的核心部分,它提供了丰富的类用于处理输入和输出操作。这个系统包括了多种类,从简单的字节流到复杂的字符流,以及一系列的装饰器类,用于扩展和增强原始流的功能。 Java 1.0 和 1.1 中的I/...
Java I/O, NIO, 和 NIO.2 是Java平台中处理输入/输出操作的核心组件,对于任何Java开发者来说,理解和掌握这些概念至关重要。本文将深入探讨这些技术,旨在提供一个全面而详尽的概述。 Java I/O(Input/Output)是...
Java I/O 编程是Java开发中的重要组成部分,主要用于处理数据的输入与输出。下面将详细阐述其中的关键概念和方法。 1. 数据流的概念及输入输出方法: 数据流是计算机中进行数据传输的通道,包括从外部设备到程序的...
在Java编程语言中,输入/输出(I/O)是处理数据传输的核心部分。过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码...
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
OReilly.Java.I.O.2nd.Edition.May.2006 Java的io包主要包括: 1. 两种流:字节流(byte Stream)和字符流(character stream),这两种流不存在所谓的谁代替谁、谁比谁高级之说,它们互为补充,只是侧重点不同...
Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...
Java I/O系统是Java编程语言中的一个重要组成部分,它允许程序进行输入输出操作,与外部世界进行数据交互。在Java中,I/O系统基于流的概念,流可以被视为数据的流动渠道,既可以用来读取数据(输入流),也可以写入...
Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...
Java I/O层次结构详解 Java I/O系统是Java平台中不可或缺的一部分,它为开发者提供了处理输入和输出的强大工具。在Java中,I/O操作主要基于流(Stream)的概念,流可以被视为数据的有序序列,既可以代表从源读取...
Java I/O流通讯录是一个基于Java编程语言设计的实用程序,它主要用于演示和学习Java的I/O流操作。在这个项目中,开发者通过I/O流实现了对文件的读写功能,从而构建了一个简单的通讯录系统。这个系统允许用户进行添加...
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
### Java I/O总结 #### 一、从`new BufferedReader(new InputStreamReader(conn.getInputStream()))`想到的 在Java编程中,处理输入输出(I/O)是一项常见的任务。这段代码`new BufferedReader(new ...
Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统硬件等。在Java I/O中,我们使用流(Stream)的概念来处理数据,流是数据传输的通道。本套习题...
java I/o java I/o 详细介绍课件
Java I/O 文件操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,涉及文件的创建、读取、写入、删除以及复制等任务。在Java中,这些操作主要是通过java.io包提供的类来实现的。下面将详细介绍这些知识点...
Java I/O系统是Java编程语言中的一个核心组成部分,它提供了处理输入输出操作的类和接口。这个系统的设计目的是为了使得应用程序能够与外部世界交互,包括读取和写入文件、网络数据、标准输入输出流等。在Java中,I/...
MaglevIO是一个专注于提供易用性和高性能的Java I/O库,其设计灵感来源于Java的非阻塞I/O(Non-blocking I/O,NIO)框架。NIO是Java平台中一个重要的部分,它允许程序在处理大量并发连接时显著提高效率,尤其是在...