您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > JavaSE14_高级IO编程
编程张张利利国国中科院新科海学校中科院新科海学校v512v512工作室工作室2JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校应用专题3.1标准I/O重定向3.2属性信息导入/导出3.3随机存取文件3.4临时文件1JavaI/O原理2基本I/O流类型5NI/O4对象序列化3JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校原理基本概念:¾I/O(Input/Output)¾数据源(DataSource)¾数据宿(DataSink)Java中把不同的数据源与程序间的数据传输都抽象表述为“流”(Stream),java.io包中定义了多种I/O流类型实现数据I/O功能。I/O流分类:¾输入流(InputStream)和输出流(OutputStream)¾节点流(NodeStream)和处理流(ProcessingStream)¾字符流(CharacterStream)和字节流(ByteStream)4JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校输入流和输出流按照数据流动的方向,Java流可分为输入流(InputStream)和输出流(OutputStream)¾输入流只能从中读取数据,而不能向其写出数据;¾输出流则只能向其写出数据,而不能从中读取数据;¾特例:java.io.RandomAccessFile类。5JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校节点流和处理流根据数据流所关联的是数据源还是其他数据流,可分为节点流(NodeStream)和处理流(ProcessingStream)¾节点流直接连接到数据源¾处理流是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现增强的数据读/写功能,处理流并不直接连到数据源。how节点流FileReader处理流BufferedReaderhowareyouread()readLine()文件图14-1节点流及处理流的连接6JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校字符流和字节流按传输数据的“颗粒大小”划分,可分为字符流(CharacterStream)和字节流(ByteStream)¾字节流以字节为单位进行数据传输,每次传送一个或多个字节;¾字符流以字符为单位进行数据传输,每次传送一个或多个字符。Java命名惯例:凡是以InputStream或OutputStream结尾的类型均为字节流,凡是以Reader或Writer结尾的均为字符流。7JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校抽象类java.io.InputStream是所有字节输入流类型的父类,该类中定义了以字节为单位读取数据的基本方法,并在其子类中进行了分化和实现。三个基本的read方法:¾intread()¾intread(byte[]buffer)¾intread(byte[]buffer,intoffset,intlength)其它方法:¾voidclose()¾intavailable()¾skip(longn)¾booleanmarkSupported()¾voidmark(intreadlimit)¾voidreset()8JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校java.io.OutputStream与java.io.InputStream对应,是所有字节输出流类型的抽象父类。三个基本的write方法:¾voidwrite(intc)¾voidwrite(byte[]buffer)¾voidwrite(byte[]buffer,intoffset,intlength)其它方法:¾voidclose()¾voidflush()10JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校抽象类java.io.Reader是所有字符输入流类型的父类,其中声明了用于读取字符流的有关方法。三个基本的read方法:¾intread()¾intread(char[]cbuf)¾intread(char[]cbuf,intoffset,intlength)其它方法:¾voidclose()¾booleanready()¾skip(longn)¾booleanmarkSupported()¾voidmark(intreadAheadLimit)¾voidreset()12JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校java.io.Writer与java.io.Reader类对应,是所有字符输出流类型的共同父类。五个基本的write方法:¾voidwrite(intc)¾voidwrite(char[]cbuf)¾voidwrite(char[]cbuf,intoffset,intlength)¾voidwrite(Stringstring)¾voidwrite(Stringstring,intoffset,intlength)其它方法:¾voidclose()¾voidflush()14JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校常用I/O流类型(1)FileInputStream/FileOutputStream¾FileInputStream用于读取本地文件中字节数据,FileOutputStream用于将字节数据写出到文件。¾例14-1使用字节流实现文件复制FileReader/FileWriter¾FileReader用于以字符为单位读取文本文件,FileWriter类用于将字符数据写出到文本文件中。¾例14-2使用字符流实现文件复制BufferedReader/BufferedWriter¾BufferedReader用于缓冲读取字符,BufferedWriter则提供字符的缓冲写出功能。¾例14-3使用字符处理流实现文件复制16JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校流类型(2)InputStreamReader¾InputStreamReader可封装字节输入流并从中读取字节数据,然后将之转换为字符。¾转换时所使用的字符编码可以在构造方法中显式指定,也可以使用平台的默认字符编码。其构造方法格式为:•publicInputStreamReader(InputStreamin)•publicInputStreamReader(InputStreamin,Stringenc)¾例10-3OutputStreamWriter¾与InputStreamReader对应,OutputStreamWriter可按照特定的字符编码规则把字符转化为字节并写出到它所封装的字节输出流。17JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校流类型(3)PrintStream¾PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型数据(而不仅限于byte型)的格式化表示形式。PrintStream的方法从不抛出IOException。PrintWriter¾PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOException。¾与PrintStream的区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream,还能够封装Writer类型字符输出流并增强其功能。¾例10-718JavaSEJavaSE应用程序设计应用程序设计新科海学校新科海学校流类型(4)DataInputStream/DataOutputStream¾二者分别实现了DataInput/DataOutput接口¾DataInputStream能够以一种与机器无关的方式,直接从底层字节输入流读取Java基本类型和Sring类型的数据,常用方法包括:•publicDataInputStream(InputStreamin)•publicfinalbooleanreadBoolean()•publicfinalbytereadByte()•publicfinalcharreadChar()•publicfinaldoublereadDouble()•publicfinalfloatreadFloat()•publicfinalintreadInt()•publicfinallongreadLong()•publicfinalshortreadShort()•publicfinalStringreadUTF()¾DataOutputStream则能够直接将Java基本类型和String类型数据写出到其他的字节输出流。¾例1
本文标题:JavaSE14_高级IO编程
链接地址:https://www.777doc.com/doc-6133933 .html