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

第8章 IO_补充案例(6)

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

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

输出流和字节数组输入流。为了让初学者熟悉者两个类,在案例中通过使用这两个类来读取和输出一个字符串数据来演示。

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

1) 编写Example14类

2) 在main()方法中使用ByteArrayInputStream(byte[] buf)构造方法,创建一个字节数组输入流对

象,并将要一段字符串读取到缓冲区数组中

3) 创建一个ByteArrayOutputStream,然后在while循环中,将字节数组输入流缓冲区中数据读取

到输出流缓冲区中

4) 将输出流缓冲区中的数据一次性输出到控制台

二、案例实现

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class Example14 { }

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

//创建一个字节数组输入流,使用缓冲区数组

ByteArrayInputStream bis = new ByteArrayInputStream(

\

//创建一个字节数组输出流

ByteArrayOutputStream bos = new ByteArrayOutputStream(); int by = 0;

//循环读取输入流缓冲区中的数据到输出流缓冲区中 while ((by = bis.read()) != -1) { }

//将缓冲区中的数据一次性输出

System.out.println(bos.toString());

bos.write(by);

程序运行结果如图8-20所示。

图8-20 运行结果

三、案例总结

1、ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。关闭 ByteArrayInputStream是无效的,该类中的方法在关闭此流后仍然可以被调用,而不会产生任何 IOException。

2、ByteArrayOutputStream类实现了一个输出流,其中的数据被写入一个 byte 数组,缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。和ByteArrayInputStream一样,关闭

26

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

ByteArrayOutputStream是无效的,该类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。 3、虽然ByteArrayInputStream的缓冲区会根据存入数据的多少而自动变化,但是读取的文件非常大时,就不能使用这个类,否则会造成内存溢出。

案例8-15 CharArrayReader和CharArrayWriter读写操作

一、案例描述

1、 考核知识点

编 号:00108018

名 称: CharArrayReader和CharArrayWriter

2、 练习目标

? 了解CharArrayReader和CharArrayWriter读写的特点

? 掌握如何使用CharArrayReader和CharArrayWriter进行读写操作

3、 需求分析

要想将字符型数据临时存入缓冲区中,可以使用JDK提供的CharArrayReader和CharArrayWriter类,分别表示字符数组输入流和字符数组输出流,它们的功能与ByteArrayInputStream、ByteArrayOutputStream类似,只不过操作的数据是字符。为了让初学者熟悉这两个类的使用,在案例中将通过读取和输出一个文件中的内容来演示。

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

1) 编写一个类Example15 2) 在main()方法中,使用FileReader读取caw.txt文件中的内容,然后创建CharArrayWriter对象,

将读取的内容写入到CharArrayWriter缓冲区。

3) 创建CharArrayReader对象,读取字符数组缓冲区中的数据并打印

二、案例实现

import java.io.*;

public class Example15 {

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

FileReader fr = new FileReader(\创建一个FileReader对象

CharArrayWriter chaw = new CharArrayWriter();// 在内存中创建一个字符数组缓冲区 // 下面的代码是将数据写入缓冲区 int b;

while ((b = fr.read()) != -1) { }

fr.close(); chaw.close();

char[] chs = chaw.toCharArray();// 将缓冲区中的数据转换成字符型数组 CharArrayReader cr = new CharArrayReader(chs);// 读取字符数组中的数据 // 下面的代码是从缓冲区中读取数据,并进行打印

27

chaw.write(b); // 将读取到的字符写入缓冲区

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

}

}

int i = 0;

while ((i = cr.read()) != -1) { }

System.out.println((char) i);

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

图8-21 运行结果

三、案例总结

CharArrayReade从字符数组中读取数据,CharArrayWriter是在内存中创建一个字符数组缓冲区,它们的功能与ByteArrayInputStream、ByteArrayOutputStream类似,只不过操作的数据是字符。

案例8-16 SequenceInputStream

一、案例描述

1、 考核知识点

编 号:00108019

名 称: SequenceInputStream

2、 练习目标

? 掌握如何使用SequenceInputStream合并多个流对象

3、 需求分析

如果希望多个流处理数据,这时就需要将这些流进行合并。JDK提供了SequenceInputStream类,它可以将几个输入流串联在一起,合并为一个输入流。为了让初学者掌握SequenceInputStream的用法,案例中使用这个类将读取不同文件的两个输入流合并,并将合并后的数据输出到另一个文件。

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

1) 2) 3) 4)

编写Example16类

在main()方法中分别创建两个读取不同文件的输入流对象

使用SequenceInputStream合并流将这两个输入流对象对象合并 通过文件输出流将合并后的数据写入到另一个文件中

28

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

二、案例实现

import java.io.*;

public class Example16 { }

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

// 下面的代码是创建了两个流对象fis1、fis2

FileInputStream fis1 = new FileInputStream(\FileInputStream fis2 = new FileInputStream(\// 创建一个序列流,合并两个字节流fis1和fis2

SequenceInputStream sis = new SequenceInputStream(fis1, fis2); FileOutputStream fos = new FileOutputStream(\int len;

byte[] buf = new byte[1024]; // 创建一个1024个字节数组作为缓冲区 // 下面的代码用于循环读取三个流中的文件 while ((len = sis.read(buf)) != -1) { }

sis.close(); fos.close();

fos.write(buf, 0, len); // 将缓冲区中的数据输出

程序运行结果如图8-22所示。

图8-22 运行结果

三、案例总结

1、上述案例中是对两个流进行合并,要对多个流进行合并可以使用SequenceInputStream类的另一个构造方法,具体如下:

SequenceInputStream(Enumeraion e)

2、SequenceInputStream类从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

29

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

案例8-17 File类的常用方法的使用

一、案例描述

1、 考核知识点

编 号:00108020

名 称: File类的常用方法

2、 练习目标

? 掌握File类的构造方法及File对象的创建方式 ? 掌握如何使用File类中的常用方法

3、 需求分析

在开发过程中涉及到文件有关的内容时,我们经常会使用到File类,该类中拥有一系列的方法,对于初学者来说很难弄清它们之间的区别,为了让大家熟悉File类中的常用方法,本案例将演示File类中的方法对文件进行操作来学习方法的使用。

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

1) 编写Example17类

2) 在main()方法中使用File(String parent, String child)构造方法创建File文件对象

3) 使用File类的方法对该文件进行各种操作,包括判断文件是否存在,判断是否是文件,获取

文件名称,获取文件大小,获取最后修改时间等等。

二、案例实现

import java.io.File;

import java.io.IOException; import java.sql.Date;

import java.text.DateFormat; public class Example17 {

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

// 创建File文件对象,表示一个文件

File file = new File(\// 判断文件是否存在

System.out.println(\文件是否存在:\存在\不存在\if (!file.exists()) { }

// 获取文件名称

System.out.println(\文件名称:\// 获取文件的相对路径

System.out.println(\文件的相对路径:\// 获取文件的绝对路径

30

// 如果文件不存在便创建该文件

boolean ifcreat = file.createNewFile();

System.out.println(\文件是否创建成功:\

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

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