第10章Java数据流
第10章 Java数据流
Java数据流 本章主要介绍Java语言如何利用数据流的思 想处理字节和字符的输入输出(包括 stdin、 stdout和 stderr)。本章后面的几个小节还将 介绍一些对文件和文件中的数据进行处理 的具体方法
Java数据流 ▪ 本章主要介绍Java语言如何利用数据流的思 想处理字节和字符的输入输出(包括stdin、 stdout和stderr)。本章后面的几个小节还将 介绍一些对文件和文件中的数据进行处理 的具体方法
数据流的基本概念 ■数据流是指一组有顺序的、有起点和终点 的字节集合 文件、字符串 存储区 文件 文件 起 程序 终 点 程序 点 数据流 终端 网络端点 网络端点
数据流的基本概念 ▪ 数据流是指一组有顺序的、有起点和终点 的字节集合 文件 程序 网络端点 数据流 文件 程序 终端 网络端点 文件、字符串 存储区 终 点 起 点
流的不同层次 ■流被组织成不同的层次。最粗略的,数据 流输只读 object 流 Input Stream Output Stream Reader Writer Meant for byte transfer Meant for character transfer (L.e. Binary) (i.e. Text or ASCl)
流的不同层次 ▪ 流被组织成不同的层次。最粗略的,数据 流可以分为输入数据流(input stream)和 输出数据流(output stream)。输入数据流 只能读不能写,而输出数据流只能写不能 读
Java开发环境数据流 Java.10包提供数据流 import java. io. 在JDK1.1之前,java.io包中的流只有以byte为单 位的流 对于以16位的 Uni code码表示的字符流处理很不方便 ■JDK1.1开始,java.io包中加入了专门用于字符流 处理的类,这是以 Reader和 Writer为基础派生的 系列的类,还有用于对象的永久化保存状态的 机制,它们通过实现 bjectInput和 Ob jectOutput 接口来达到要求
Java开发环境数据流 ▪ java.io包提供数据流 ▪ 在JDK1.1之前,java.io包中的流只有以byte为单 位的流 ▪ 对于以16位的Unicode码表示的字符流处理很不方便 ▪ JDK1.1开始,java.io包中加入了专门用于字符流 处理的类,这是以Reader和Writer为基础派生的 一系列的类 ,还有用于对象的永久化保存状态的 机制,它们通过实现ObjectInput和ObjectOutput 接口来达到要求 import java.io.*
输入数据流 输入数据流( Input Stream)是指只能读不 能写的数据流,用于向计算机内输入信息 而用 Java. Io包中所有输入数据流都是由抽象类 InputStream继承而来 从数据流中读取数据时,必须有一个数据 源与该数据流相连
输入数据流 ▪ 输入数据流(Input Stream)是指只能读不 能写的数据流,用于向计算机内输入信息 而用 ▪ java.io包中所有输入数据流都是由抽象类 InputStream继承而来 ▪ 从数据流中读取数据时,必须有一个数据 源与该数据流相连
主要数据操作方法 a int read( ■从输入流中读一个字节的二进制数据,然后以此数据 为低位字节,配上一个全零字节,形成一个0~255之 间的整数返回。它是一个抽象方法,需要在子类中具 体实现。读取结束时,它会得到-1 int read(byte b) 将多个字节读到数组中,填满整个数组 int read(byte b, int off, int len) 从输入流中读取长度为len的数据,从数组b中索引为of 的位置开始放置读入的数据,读毕返回读取的字节数
主要数据操作方法 ▪ int read() ▪ 从输入流中读一个字节的二进制数据,然后以此数据 为低位字节,配上一个全零字节,形成一个0~255之 间的整数返回。它是一个抽象方法,需要在子类中具 体实现。读取结束时,它会得到-1 ▪ int read(byte[] b) ▪ 将多个字节读到数组中,填满整个数组 ▪ int read(byte[] b, int off , int len) ▪ 从输入流中读取长度为len的数据,从数组b中索引为off 的位置开始放置读入的数据,读毕返回读取的字节数
主要数据操作方法 void close 数据流关闭,同时释放与该数据流相关的资源 也可以由运行时系统自动关闭 int avalable( 返回目前可以从数据流中读取的字节数(实际 的读操作所读得的字节数可能大于该返回值) long skip(long D) 跳过数据流中指定数量的字节不读,返回值表 示实际跳过的字节数
主要数据操作方法 ▪ void close() ▪ 数据流关闭,同时释放与该数据流相关的资源 ▪ 也可以由运行时系统自动关闭 ▪ int available() ▪ 返回目前可以从数据流中读取的字节数(实际 的读操作所读得的字节数可能大于该返回值) ▪ long skip(long l) ▪ 跳过数据流中指定数量的字节不读,返回值表 示实际跳过的字节数
主要数据操作方法 boolean marksupported( 用于指示数据流是否支持回推操作,当数据流支 持mark0和 Reset0方法时返回tue,反之返回 false void mark(int markarea) 标记数据流的当前位置,并划出一个缓冲区 其大小至少为指定参数的大 void rese 执行完 reado操作后,调用方法 reset0)将回到输 入数据流中被标记的位置
主要数据操作方法 ▪ boolean markSupported() ▪ 用于指示数据流是否支持回推操作,当数据流支 持mark()和reset()方法时返回true,反之返回 false ▪ void mark(int markarea) ▪ 标记数据流的当前位置,并划出一个缓冲区, 其大小至少为指定参数的大小 ▪ void reset() ▪ 执行完read()操作后,调用方法reset()将回到输 入数据流中被标记的位置
输出数据流 输出数据流( Output Stream)是指只能写不 能读的流,用于从计算机中输出数据 Java. Io包中所有输出数据流大多是从抽象类 Outputstrean继承而来
输出数据流 ▪ 输出数据流(Output Stream)是指只能写不 能读的流,用于从计算机中输出数据 ▪ java.io包中所有输出数据流大多是从抽象类 OutputStream继承而来