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

第8章 IO_补充案例

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

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

第八章 补充案例

案例8-1 FileInputStream读取文件数据

一、案例描述

1、 考核知识点

编 号:00108002

名 称: 字节流读写文件--读取文件

2、 练习目标

? 掌握如何使用FileInputStream字节流读取文件中数据

3、 需求分析

在操作文件时,最常见的就是从文件中读取数据并将数据写入文件,即文件的读写。针对文件的读操作,JDK专门提供了FileInputStream类。为了让初学者掌握FileInputStream字节流的使用,在案例中将针对读取并打印指定文件中的数据进行演示。

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

1) 创建一个文本文件fis.txt,在文件中编辑内容“Welcome to learn IO stream!”。 2) 在同一目录下创建Example01.java文件,编写Example01类。

3) 在main()方法中,通过FileInputStream(String name)构造方法创建文件输入字节流对象,并指

定待读取文件fis.txt的路径。

4) 在while循环条件中使用read()方法每次读取一个字节,同时在循环体中打印每次读取的数据,

当read()方法返回值为-1时表示读取到文件结尾,循环结束。 5) 使用close()方法,关闭流资源。

二、案例实现

import java.io.FileInputStream; import java.io.IOException; public class Example01 {

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

// 创建字节输入流对象

FileInputStream fis = new FileInputStream(\// 读取所有字节 int by = 0;

while ((by = fis.read()) != -1) { }

// 关闭字节输入流 fis.close();

1

System.out.print((char) by);

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

}

}

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

图8-1 运行结果

从运行结果可以看出,使用FileInputStream类成功地读取出fis.txt文件中的数据。

三、案例总结

1、通过FileInputStream(String name)构造方法创建FileInputStream对象时,传入的待读取文件的路径,可以是相对路径也可以是绝对路径。

2、在读取文件数据时,必须保证文件是存在并且可读的,否则会抛出文件找不到的异常FileNotFoundException。

3、FileInputStream类有三个重载的read()方法,如果方法返回值为-1,均表示已读取到了文件的结尾。 4、为了使流对象所占用的系统资源得到释放,请记住调用FileInputStream类close()方法关闭字节流。 5、思考一下:修改Example01类,如何实现只读取文件的单个字节?代码如下:

import java.io.FileInputStream; import java.io.IOException; /*

* 读取单个字节 */

public class Example01 { }

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

// 创建字节输入流对象

FileInputStream fis = new FileInputStream(\// 读取单个字节 int i = fis.read(); System.out.println(i); // 关闭字节输入流 fis.close();

案例8-2 FileOutputStream写入数据

一、案例描述

1、 考核知识点

编 号:00108003

名 称: 字节流读写文件--写入文件

2

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

2、 练习目标

? 掌握如何使用FileOutputStream字节流向文件写入数据

3、 需求分析

与FileInputStream对应的是FileOutputStream,它是操作文件的字节输出流,专门用于把数据写入文件。为了让初学者掌握FileOutputStream字节流的使用,在案例中将通过演示向文本文件写入一段文字来学习。

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

1) 编写Example02类。 2) 在main()方法中,通过FileOutputStream(String name)构造方法创建文件输出字节流对象,并指

定写入的文件路径。

3) 定义一段字符串,并将它转换成byte数组,然后通过write(byte[] b)方法,将byte数组写入到

文件输出流中。

4) 使用FileOutputStream类的close()方法,关闭流资源。

二、案例实现

import java.io.FileOutputStream; import java.io.IOException; public class Example02 { }

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

// 创建字节输出流对象

FileOutputStream fos = new FileOutputStream(\// 用字符串转换字节数组

byte[] b = \欢迎学习IO流\// 将数组中数据写入文件 fos.write(b); // 关闭输出流 fos.close();

程序运行后,会在当前目录下生成一个新的文本文件fos.txt,文件内容如图8-2所示:

图8-2 fos.txt

从运行结果可以看出,使用FileOutputStream类成功把数据写入文件。

3

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

三、案例总结

1、与FileInputStream读取的文件必须存在不同,FileOutputStream写入数据的文件不必是已存在的,因为该文件会被自动创建。

2、FileOutputStream类有三个重载的write()方法,可以分别向文件中一次写入单个字符、字符数组以及数组的部分数据。

3、思考一下:我们在使用案例中的方式,多次向fos.txt文件中写入不同数据时,发现文件中原有内容被新数据替代了。请问如果希望在原有文件内容之后追加新内容,如何修改Example02类?代码如下:

import java.io.FileOutputStream; import java.io.IOException; public class Example02 { }

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

// 创建字节输出流对象

FileOutputStream fos = new FileOutputStream(\// 用字符串转换字节数组

byte[] b = \,真的很好玩\// 将数组内容写入文件 fos.write(b); // 关闭输出流 fos.close();

程序运行后,再次打开fos.txt,文件内容如图8-3所示:

图8-3 fos.txt

以上代码中使用了FileOutputStream的另一个构造方法FileOutputStream(String fileName, boolean append) 来创建文件输出流对象,当设置append参数值为true时表示追加内容,从上图可以看出新内容成功追加到原有内容以后。

案例8-3 自定义缓冲区拷贝大文件

一、案例描述

1、 考核知识点

编 号:00108005

名 称: 字节流的缓冲区

2、 练习目标

4

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

? 掌握如何自定义缓冲区

? 掌握如何使用自定义缓冲区读、写文件 ? 了解自定义缓冲区读写的优点

3、 需求分析

操作文件时一个个字节的读写,效率非常低,为了提高效率可以自定义一个字节数组作为缓冲区。为了让初学者掌握如何使用自定义缓冲区读写文件,案例中将演示使用字节流的自定义缓冲区拷贝“IO流.avi”文件到其它目录来学习。

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

1) 在当前目录下创建source和target文件夹,并在source文件夹中存放一个“IO流.avi”文件。 2) 编写Example03类。 3) 在main()方法中,分别创建文件字符输出流和文件字符输入流对象,并指定文件拷贝的源及目

标路径。

4) 自定义一个1024长度的字节数组作为缓冲区,然后通过输入流将源文件数据读取到缓冲区中,

输出流再将缓冲区中数据写入到目标文件中,循环往复直到文件拷贝结束,并计算拷贝文件总耗时。

5) 使用close()方法,关闭流资源。

二、案例实现

import java.io.*;

public class Example03 {

public static void main(String[] args) {

FileInputStream fis = null; FileOutputStream fos = null; try {

// 创建文件字符输出流和文件字符输入流对象

fis = new FileInputStream(\流.avi\fos = new FileOutputStream(\流.avi\// 创建字节数组,用于缓存读取的字节 byte[] bys = new byte[1024]; int len = 0;

long starttime = System.currentTimeMillis();// 获取拷贝文件前的系统时间 // 读取到文件结束时,返回-1

while ((len = fis.read(bys)) != -1) { }

long overtime = System.currentTimeMillis();// 获取拷贝文件结束的系统时间 System.out.println(\拷贝文件消耗的时间为:\毫秒\e.printStackTrace();

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

// 将缓冲区中的数据写入文件 fos.write(bys, 0, len);

} catch (IOException e) {

} finally {

5

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

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