第8章 IO补充案例Word文档下载推荐.docx
- 文档编号:13701843
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:47
- 大小:266.49KB
第8章 IO补充案例Word文档下载推荐.docx
《第8章 IO补充案例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第8章 IO补充案例Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
4、设计思路(实现原理)
1)创建一个文本文件fis.txt,在文件中编辑内容“WelcometolearnIOstream!
”。
2)在同一目录下创建Example01.java文件,编写Example01类。
3)在main()方法中,通过(Stringname)构造方法创建文件输入字节流对象,并指定待读取文件fis.txt的路径。
4)在while循环条件中使用read()方法每次读取一个字节,同时在循环体中打印每次读取的数据,当read()方法返回值为-1时表示读取到文件结尾,循环结束。
5)使用close()方法,关闭流资源。
二、案例实现
importjava.io.;
importjava.io.IOException;
publicclassExample01{
publicstaticvoidmain(String[]args)throwsIOException{
//创建字节输入流对象
fis=new("
fis.txt"
);
//读取所有字节
intby=0;
while((by=fis.read())!
=-1){
System.out.print((char)by);
}
//关闭字节输入流
fis.close();
}
}
运行结果如图8-1所示。
图8-1运行结果
从运行结果可以看出,使用类成功地读取出fis.txt文件中的数据。
三、案例总结
1、通过(Stringname)构造方法创建对象时,传入的待读取文件的路径,可以是相对路径也可以是绝对路径。
2、在读取文件数据时,必须保证文件是存在并且可读的,否则会抛出文件找不到的异常。
3、类有三个重载的read()方法,如果方法返回值为-1,均表示已读取到了文件的结尾。
4、为了使流对象所占用的系统资源得到释放,请记住调用类close()方法关闭字节流。
5、思考一下:
修改Example01类,如何实现只读取文件的单个字节?
代码如下:
/*
*读取单个字节
*/
//读取单个字节
inti=fis.read();
System.out.println(i);
案例8-2写入数据
字节流读写文件--写入文件
掌握如何使用字节流向文件写入数据
与对应的是,它是操作文件的字节输出流,专门用于把数据写入文件。
为了让初学者掌握字节流的使用,在案例中将通过演示向文本文件写入一段文字来学习。
1)编写Example02类。
2)在main()方法中,通过(Stringname)构造方法创建文件输出字节流对象,并指定写入的文件路径。
3)定义一段字符串,并将它转换成byte数组,然后通过write(byte[]b)方法,将byte数组写入到文件输出流中。
4)使用类的close()方法,关闭流资源。
publicclassExample02{
//创建字节输出流对象
fos=new("
fos.txt"
//用字符串转换字节数组
byte[]b="
欢迎学习IO流"
.getBytes();
//将数组中数据写入文件
fos.write(b);
//关闭输出流
fos.close();
程序运行后,会在当前目录下生成一个新的文本文件fos.txt,文件内容如图8-2所示:
图8-2fos.txt
从运行结果可以看出,使用类成功把数据写入文件。
1、与读取的文件必须存在不同,写入数据的文件不必是已存在的,因为该文件会被自动创建。
2、类有三个重载的write()方法,可以分别向文件中一次写入单个字符、字符数组以及数组的部分数据。
3、思考一下:
我们在使用案例中的方式,多次向fos.txt文件中写入不同数据时,发现文件中原有内容被新数据替代了。
请问如果希望在原有文件内容之后追加新内容,如何修改Example02类?
true);
,真的很好玩"
//将数组内容写入文件
程序运行后,再次打开fos.txt,文件内容如图8-3所示:
图8-3fos.txt
以上代码中使用了的另一个构造方法(String
boolean
append)来创建文件输出流对象,当设置append参数值为true时表示追加内容,从上图可以看出新内容成功追加到原有内容以后。
案例8-3自定义缓冲区拷贝大文件
字节流的缓冲区
掌握如何自定义缓冲区
掌握如何使用自定义缓冲区读、写文件
了解自定义缓冲区读写的优点
操作文件时一个个字节的读写,效率非常低,为了提高效率可以自定义一个字节数组作为缓冲区。
为了让初学者掌握如何使用自定义缓冲区读写文件,案例中将演示使用字节流的自定义缓冲区拷贝“IO流.avi”文件到其它目录来学习。
1)在当前目录下创建source和target文件夹,并在source文件夹中存放一个“IO流.avi”文件。
2)编写Example03类。
3)在main()方法中,分别创建文件字符输出流和文件字符输入流对象,并指定文件拷贝的源及目标路径。
4)自定义一个1024长度的字节数组作为缓冲区,然后通过输入流将源文件数据读取到缓冲区中,输出流再将缓冲区中数据写入到目标文件中,循环往复直到文件拷贝结束,并计算拷贝文件总耗时。
importjava.io.*;
publicclassExample03{
publicstaticvoidmain(String[]args){
fis=null;
fos=null;
try{
//创建文件字符输出流和文件字符输入流对象
fis=new("
source\\IO流.avi"
fos=new("
target\\IO流.avi"
//创建字节数组,用于缓存读取的字节
byte[]bys=newbyte[1024];
intlen=0;
longstarttime=System.currentTimeMillis();
//获取拷贝文件前的系统时间
//读取到文件结束时,返回-1
while((len=fis.read(bys))!
//将缓冲区中的数据写入文件
fos.write(bys,0,len);
}
longovertime=System.currentTimeMillis();
//获取拷贝文件结束的系统时间
System.out.println("
拷贝文件消耗的时间为:
"
+(overtime-starttime)+"
毫秒"
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException("
拷贝文件失败!
}finally{
try{
//关闭流资源
fis.close();
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException("
输入流关闭失败!
fos.close();
输出流关闭失败!
程序运行结束后,打开target文件夹,发现source文件夹中的“IO流.avi”文件被成功拷贝到了target文件夹,如图8-4所示。
图8-4拷贝结果
程序运行结束后,会在命令行窗口输出拷贝文件所消耗的时间,如图8-5所示:
图8-5运行结果
从运行结果可以看出,使用自定义缓冲区拷贝大文件成功,而且耗时较短。
1、由于计算机性能等各方面原因,会导致每次拷贝文件所消耗的时间未必相同。
2、在指定文件路径时使用了“\\”,这是因为在Windows目录路径基础上使用了转义符“\”。
3、为了保证IO流的close()方法必须执行,通常将关闭流的操作写在finally代码块中。
4、思考一下:
使用自定义缓冲区拷贝文件时效率高耗时短,请修改Example03类,在不使用缓冲区的情况下拷贝文件,打印所消耗的时间,并与使用缓冲区所耗时间比较。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 IO补充案例 IO 补充 案例
![提示](https://static.bdocx.com/images/bang_tan.gif)