77范文网 - 专业文章范例文档资料分享平台

第8章 IO_补充案例(4)

来源:网络收集 时间:2019-03-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

博学谷——让IT教学更简单,让IT学习更有效

图8-12 运行结果

运行结果显示正常,添加行号输出达到预期。

三、案例总结

setLineNumber()方法设置当前行号,getLineNumber()方法读取当前行号。在案例当前行号初始值设为100,输出时行号却是从101开始的,这是因为LineNumberReader类在读取到换行符('\\n')、回车符('\\r')或者回车后紧跟换行符时,会将行号自动加1。

案例8-9 转换流拷贝文件

一、案例描述

1、 考核知识点

编 号:00108011 名 称: 转换流

2、 练习目标

? 了解什么是转换流

? 掌握如何使用InputStreamReader和OutputStreamWriter

3、 需求分析

有时字节流和字符流之间也需要进行转换,这时就需要用到转换流。在JDK中提供了两个类可以将字节流转换为字符流,它们分别是InputStreamReader和OutputStreamWriter。为了让初学者掌握转换流的使用,案例中将演示通过转换流拷贝文件并转成大写来学习。

4、 设计思路(实现原理)

1) 在source目录下编写“HelloWrold.java”文件,里面有一段HelloWorld程序。 2) 在同一目录下,编写Example09类。

3) 在main()方法中,创建文件字节输入和输出流对象,然后分别使用转换流包装,为提高效率,

最后再通过缓冲流包装。

4) 使用readLine()方法循环一行行读取源文件并转大写写入到目标文件,直至文件末尾。 5) 调用close()方法,关闭流资源。

二、案例实现

import java.io.*;

public class Example10 {

public static void main(String[] args) {

BufferedReader bfr = null;

16

博学谷——让IT教学更简单,让IT学习更有效

}

}

BufferedWriter bfw = null; try {

InputStream in = new FileInputStream(\// 字符的缓冲读取字节,将字节转成字符

InputStreamReader isr = new InputStreamReader(in); // 建立字符流缓冲区对象

bfr = new BufferedReader(isr);

OutputStream out = new FileOutputStream(\// 字符数据,输出到字节,将字符数据转成字节

OutputStreamWriter osw = new OutputStreamWriter(out); // 建立字符流的缓冲区对象

bfw = new BufferedWriter(osw); String line = null;

while ((line = bfr.readLine()) != null) { }

bfw.write(line.toUpperCase()); bfw.newLine();

} catch (IOException e) { }

throw new RuntimeException(\文件拷贝失败!\try { } try { }

if (bfw != null)

bfw.close(); if (bfw != null)

bfr.close();

} finally {

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(\输入流关闭失败!\

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(\输出流关闭失败!\

程序运行后,分别打开“source”和“target”目录下“HelloWorld.java”文件,结果如图8-13所示:

17

博学谷——让IT教学更简单,让IT学习更有效

图8-13 拷贝结果

从结果可以看出,使用转换流拷贝文件并转大写操作成功。

三、案例总结

在使用转换流时,只能针对操作文本文件的字节流进行转换,如果字节流操作的是一张图片,此时转换为字符流就会造成数据丢失。

案例8-10 对象序列化与反序列化

一、案例描述

1、 考核知识点

编 号:00108013

名 称: ObjectInputStream和ObjectOutputStream类

2、 练习目标

? 了解什么是序列化和反序列化

? 掌握如何使用ObjectInputStream和ObjectOutputStream实现对象的序列化和反序列化

3、 需求分析

使用ObjectOutputStream和ObjectInputStream可以实现对象的序列化和反序列化。为了让初学者掌握这两种类的使用,案例中将通过序列化Person对象到“oos.txt”文件,再反序列化读取该文件获取Person对象数据来学习。

4、 设计思路(实现原理)

1) 编写Person类,实现序列化接口,在类中定义name和age属性,生成get ()和set()方法,并

重写toString()方法。

2) 编写Example10类,在main()方法中通过ObjectOutputStream将赋值后的Person对象序列化

到“oos.txt”文件。

3) 通过ObjectInputStream读取该文件实现Person对象的反序列化,并打印该对象。

二、案例实现

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Example10{

public static void main(String[] args) throws Exception{

// 创建序列化流对象

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(

\

// 创建对象

Person p = new Person(\马云\

18

博学谷——让IT教学更简单,让IT学习更有效

}

import java.io.Serializable;

public class Person implements Serializable { }

private static final long serialVersionUID = 333558257579870816L; private String name; private int age; public Person() { }

public Person(String name, int age) { }

public String getName() { }

public void setName(String name) { }

public int getAge() { }

public void setAge(int age) { }

// 重写toString()方法 public String toString() { }

return \this.age = age; return age; this.name = name; return name; this.name = name; this.age = age; }

// 将Person对象输出到输出流中 oos.writeObject(p); oos.close(); // 创建反序列化流对象

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(

\

// 从oos.txt中读取Person对象 Object obj =ois.readObject(); ois.close();

// 打印反序列化后的对象

System.out.println((Person)obj);

程序运行后,在当前目录下生成了“oos.txt”文件,如图8-14所示:

19

博学谷——让IT教学更简单,让IT学习更有效

图8-14 生成文件

运行结果如图8-15所示。

图8-15 运行结果

三、案例总结

值得注意的是,当对象进行序列化时,必须保证该对象实现Serializable接口,否则程序会出现NotSerializableException异常。

案例8-11 DataInputStream和DataOutputStream

一、案例描述

1、 考核知识点

编 号:00108013

名 称: DataInputStream和DataOutputStream类

2、 练习目标

? 掌握如何使用DataInputStream和DataOutputStream

3、 需求分析

如果只需存储对象的成员数据,这些成员数据的类型又都是基本数据类型,这时就可以使用DataInputStream和DatOutputStream。为了让初学者掌握DataInputStream和DataOutputStream的用法,案例中将演示使用这两个类先向“dos.txt”文件中写入UTF-8的字符串然后再读取来学习。

4、 设计思路(实现原理)

1) 编写Example11类。

2) 在main()方法中通过DataOutputStream向“oos.txt”文件中,写入字符编码为UTF-8的字符串

“你好”。

3) 通过DataInputStream读取文件中该编码的字符串并打印。

20

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第8章 IO_补充案例(4)在线全文阅读。

第8章 IO_补充案例(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/555447.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: