资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第7章 Java的输入/输出DateDate1 1JavaJava面向对象程序设计教程面向对象程序设计教程主要内容n7.1 流输入/输出类的层次结构 7.1.1 流的概念 7.1.2 字节流 7.1.3 字符流 7.1.4 转换流 7.1.5 输入输出类的分类 7.1.6 标准流 7.1.7 IOException及其子类n7.2 输入/输出流类的应用 7.2.1 输入/输出流类的一般例子 7.2.2 典型的输入/输出流类的组合应用 7.2.3 对象串行化n7.3 文件类的应用 7.3.1 File类 7.3.2 File类应用举例DateDate2 2JavaJava面向对象程序设计教程面向对象程序设计教程7.1 流输入/输出类的层次结构DateDate3 3JavaJava面向对象程序设计教程面向对象程序设计教程流的概念 n流(Stream)是有序的数据序列,它有源(输入流) 与目的(输出流)。njava.io包使用术语流定义I/O(输入/输出)。该包有 两个主要的部分:字符流(Character stream)和字 节流(Byte stream)。 n基于文本的I/O都是一些人们能够阅读的字符(比如说 程序的源代码),而基于数据的I/O是二进制(比如说 表示图像的位图)。 n字节流被称作输入流(Input stream)或输出流( Output stream),而字符流被称作Reader或Writer 。 n字节流不能正确携带字符,一些与字符相关的流在字节 流里是没有意义的 。DateDate4 4JavaJava面向对象程序设计教程面向对象程序设计教程java.io包里的类和接口分类 n普通的用于建立不同字节和字符流类型的类 输入输出流、Reader、Writer和在它们之间 进行转换的类。n定义不同类型流的范围过滤流、缓冲流、 管道流以及一些流的具体实例。n读写基本值和字符串数据流的类和接口。n一个以系统无关的方式与文件进行交互的类和 接口。n形成对象串行化(Object serialization)机制 的类和接口将对象传递到字节流,或从一 个字节流中读取数据,重新组建对象。DateDate5 5JavaJava面向对象程序设计教程面向对象程序设计教程java.io包里的字节流 DateDate6 6JavaJava面向对象程序设计教程面向对象程序设计教程InputStream及其子类的推荐用法 n当需要输入ASCII正文或者二进制数值时,应当 使用InputStream类。n根据输入源,选用FileInputStream或某个 getInputStream方法。n可以有选择行地使用任意数量的InputStream 过滤器、缓冲区、扩展器、编码器等子类,然 后再上层包装DataInputStream类,并使用它 的read方法执行输入。如果需要读入对象而非 普通数据,则应当使用ObjectInputStream类 。n如果需要使用缓冲技术,应当直接包装 FileInputStream类,以便尽可能早地让所有 的类都采用缓冲技术。 DateDate7 7JavaJava面向对象程序设计教程面向对象程序设计教程java.io的字符流 DateDate8 8JavaJava面向对象程序设计教程面向对象程序设计教程转换流 n转换流使用的类InputStreamReader和 OutputStreamReader实现了Unicode相同指 定编码的字节流,或者本机系统的默认编码的 字节流之间的转换。 DateDate9 9JavaJava面向对象程序设计教程面向对象程序设计教程输入输出类的分类 n文件I/O :FileInputStream n内存缓冲区I/O : BufferedInputStream n存取I/O :DataInputStream n管道I/O :PipedInputStream n过滤器I/O :FilterInputStream DateDate1010JavaJava面向对象程序设计教程面向对象程序设计教程标准流 nSystem.out是标准的输出流,默认情况 下,它是一个控制台。nSystem.in是标准输入流,默认情况下, 它指的是键盘。nSystem.err指的是标准错误流,它默认 是控制台。n这些流可以重定向到任何兼容的输入/输 出设备。 DateDate1111JavaJava面向对象程序设计教程面向对象程序设计教程IOException及其子类 n在java.io中,每一个特定的I/O错误都是 用异常IOException及其子类来报告的。 n最常见的I/O异常有 FileNotFoundException、 EOFException、 InterruptedIOException、 UTFDataFormatError等。 DateDate1212JavaJava面向对象程序设计教程面向对象程序设计教程7.2 输入/输出流类的应用DateDate1313JavaJava面向对象程序设计教程面向对象程序设计教程输入/输出流类的一般例子 n在使用输入输出流类时,有两个语句总是 要注意的: 一是导入java.io包(import java.io.*;) ; 二是对IOException异常的处理,一般是在 调用的方法的声明时“throws IOException” ,当然也可以用try-catch语句进行异常处理 。n直接读取标准输入流的用法: InputStreamDemo.java n管道流的使用: PipeIODemo.javaDateDate1414JavaJava面向对象程序设计教程面向对象程序设计教程典型的输入/输出流类的组合应用 n标准输入输出: StandardIODemo.java n读写顺序文件:FileIODemo.java n读写二进制文件:BinaryIODemo.java n读写随机文件:RandomIODemo.java DateDate1515JavaJava面向对象程序设计教程面向对象程序设计教程RandomAccessFile类的文件访问控制权限n“r“ 只读,如果试图进行写操作将引发异 常IOException。 n“rw“ 可读可写,如果文件不存在将会先 创建该文件。n“rws“ 文件可读可写,并且要求每次更改 文件内容或元数据时同步写到存储设备中 。n“rwd“ 文件可读可写,并且要求每次更改 文件内容时同步写到存储设备中。DateDate1616JavaJava面向对象程序设计教程面向对象程序设计教程对象串行化 n把一个对象的表示转化为字节流的过程称为串 行化(Serialization),而从字节流中把对象 重建出来即是反串行化(Deserialization)。 n关键字transient描述的是临时的变量,它为被 串行化的数据提供了一个语言级的标记数据方 法。 n默认的串行化过程是将既不是transient也不是 static的对象的每个域变量串行化。基本类型和 字符串是用DataOutputStream中的编码写的 ,对象被ObjectOutputStream的 writeObject方法串行化。 DateDate1717JavaJava面向对象程序设计教程面向对象程序设计教程思考与n在ObjectSerialization.java 文件中改变 变量前面的关键字( 增删transient或 static ),观察输出结果及文件data.ser 大小的变化。n在ObjectSerialization.java 文件中,如 果使readObject和writeObject中定义的 结构顺序不一致,将导致什么结果?DateDate1818JavaJava面向对象程序设计教程面向对象程序设计教程7.3 文件类的应用DateDate1919JavaJava面向对象程序设计教程面向对象程序设计教程文件类的应用 nFile类提供了好几种操作文件名的有用操 作。它提供了将路径名分解的方法,用于 查询路径名所指文件有关的文件系统。n一个File对象实际上表示一条路径,不必 是一个底层文件。 DateDate2020JavaJava面向对象程序设计教程面向对象程序设计教程举例n查询文件信息:FileInfo.java n复制文件:Copy.java n查询某个目录下子目录及文件:Dir.java DateDate2121JavaJava面向对象程序设计教程面向对象程序设计教程
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号