




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter13文件处理,13-1关于流,“流”是一种抽象观念,如从键盘输入数据、将结果输出到显示器、读取与保存文件等操作皆视为流的处理。Java里的流是由字符(characters)或位(bits)所组合成的,我们可通过它来读写数据,甚至可以通过它连接数据来源(datasource),并可以将数据以字符或位数组的形式保存。,以数据的读取或写入而言,串可分为“输入流”(inputstream)与“输出流”(outputstream)两种,下图说明了流如何做为文件处理的桥梁。,在Java里,我们可以通过InputStream、OutputStream、Reader与Writer类来处理流的输入与输出。InputStream与OutputStream类通常是用来处理“位流”,也就是二进制文件。Reader与Writer类则是用来处理“字符流”,也就是纯文本文件。,一般不会直接使用这些类,而是根据这些类所派生出的子类来做文件的处理。与流相关的类可区分为“输入流”与“输出流”两种,在Java里通常是通过流类别的构造函数来创建流对象,创建好对象之后,再利用这些对象的read()和write()方法来读取或写入数据。使用完流对象之后,必须用close()方法来关闭流,并结束数据来源的处理。,13-2使用Reader与Writer类,Reader与Writer类可用来处理字符串的读取和写入的操作通常是以它们的派生类来创建实体对象,再利用对象来处理读写操作。表13-1,13-2分别列出了Reade和Writer类所提供的方法,表13-1Reader类和Write类,表13-2Writer类的方法,13-2-1文件的读取使用FileReader类,使用FileReader类读取文件,必须先调用FileReader()构造函数产生FileReader类对象,再利用它调用read()方法.,例子:,/app13_1,使用FileReader类importjava.io.*;publicclassapp13_1publicstaticvoidmain(Stringargs)chardata=newchar1024;FileReaderfr=newFileReader(“c:donkey.txt);/注意:donkey.txt实现建立好的文件,intnum=fr.read(data);Stringstr=newString(data,0,num);System.out.println(“Characterread=“+num);System.out.println(str);fr.close();,13-2-2文件的写入使用FileWriter类,文件的写入与文件的读入颇为相似,要使用FileReader类读取文件,必须先调FileReader()构造函数产生FileReader类的对象,再利用它来调用read()方法,/app13_2,使用FileWriter类importjava.io.*;publicclassapp13_2publicstaticvoidmain(Stringargs)throwsIOExceptionFileWriterfw=newFileWriter(“c:hello.txt);chardata=H,e,l,l,o,J,a,v,a,!,r,n;Stringstr=Endoffile;fw.write(data);/将字符数组写到文件里fw.write(str);/将字符串写到文件里fw.close();,13-2-3文件的读取使用BUfferedReader类,BufferedReader类可用来读取字符缓冲区里的数据,它继承自Reader类,因而也可以使用Reader类所提供的方法。表13-5,13-6列出了BufferedReader类常用的构造函数与方法。,表13-5BufferReader的构造函数,表135BufferReader的方法,欲使用BufferedReader类来读取缓冲区里的数据,必须先创建FileReader对象,再用它为参数来创建BufferedReader类的对象,接下来就可以读取缓冲区里的数据.,先建好如图13-6所示的数据,并将其保存成number.txt图136number.txt的内容,/app13_3,从缓冲区里读入数据importjava.io.*;classapp13_3publicstaticvoidmain(Stringargs)throwsIOException,Stringstr;intcount=0;FileReaderfr=newFileReader(c:Javanumber.txt);BufferedReaderbfr=newBufferedReader(fr);while(str=bfr.readLine()!=null)/每次读取行,直到文件结束count+;/计算读取的行数System.out.println(str);System.out.println(count+linesread);fr.close();/关闭文件,13-2-4文件的读取使用BufferedWriter类,BufferedWrite类的写入过程与BufferedReader类的读出过程非常相似,必须先创建FileWriter对象,再以它为参数来创建BufferedWrite类的象然后利用此对象将数据写入缓冲区里。所不同的是,缓冲区的数据要用flush()方法将其清空,也就是将缓冲区的数据写入文件中。BufferedWriter类的构造函数以及方法大家可以参考上一节的内容。,范例:BufferedWriter类的操作要求:先将5个随机数写入缓冲区,再将缓冲区的内容全部清空到文件里。,/app13_4,将数据写到缓冲区内importjava.io.*;classapp13_4publicstaticvoidmain(Stringargs)throwsIOExceptionFileWriterfw=newFileWriter(“c:javatext.txt”);BufferedWriterbfw=newBufferedWriter(fw);for(inti=1;i=5;i+)/写随机数到缓冲区bfw.write(Double.toString(Math.random);bfw.newLine();/写入还行符号bfw.flush();/将缓冲区内的数据写到文件里bfw.close();/关闭文件注意:BufferedWriter.write()仅仅把数据写入到缓冲区,在关闭文件之前必须调用flush()来把缓冲区的数据写入到文件中。,13-3-1使用InputStream与OutputStream类,InputStream与OutputSteram类是Java里用来处理以位(bit)为主的流,也就是说,除了纯文本文件之外,它们也可用来访问二进制文件(binaryfile)的数据。这两个类均继承自Java.lang.Object类,但通常不直接使用它们来处理文件,而是使用它们的子类FileInputStream与FileOutputStream所创建的对象来处理.,13-3-1文件的写入使用FileInputStream类,FileInputStream继承自InputStream类,主要用来处理以“位为主”的输入工作。,表13-9FileInputSteam的构造函数,表13-10FileInputSteam的方法,范例:FileInputStream类的操作要求:新建一文本,编辑后保存位d:test.txt,/app13_5,利用FileInputStream读取文件importjava.io.*;classapp13_5publicstaticvoidmain(Stringargs)throwsIOExceptionFileInputStreamfi=newFileInputStream(“d:test.txt”);System.out.println(“filesize=“+fi.available();,/创建byte数据byteba=newbytefi.available();/将读取的内容写到数组中fi.read(ba);/输出数组的内容System.out.println(newString(ba);fi.close();,13-3-2文件的写入使用FileOutputStream类,FileOutputStream继承自OutputStream类,它主要用来处理二进制类型文件的写入工作。,表13-11FileOutputStream构造函数,表13-12FileOutputStream类的方法,范例:FileOutputStream类操作要求:以FileOutputStream,读入一个gif图文件lena.gif(二进制文件)然后另存为my_lena.gif,/app13_6,读入与写入二进制文件importjava.io.*;publicclassapp13_6publicstaticvoidmain(Stringargs)throwsIOExceptionFileInputStreamfi=newFileInputStream(lena.gif);FileOutputStreamfo=newFileOutputStream(my_lena.gif);,System.out.println(filesize=+fi.available();/输出文件大小bytedata=newbytefi.available();/创建byte类型的数组datafi.read(data);/将图文件读入data数组fo.write(data);/将data数组里的数据写入新文件my_lena.gifSystem.out.println(filecopyedandrenamed);fi.close();fo.close();,本章摘要,1.Java是以流的方式来处理输入与输出,其好处是:无论是什么形式的输入与输出,只要针对流做处理就可以了。,2.Java里的流是由字符或位所组合成的,可通过它来读写数据,甚至可以通过它连接数据来源,并可以将数据以字符或位数组的类型保存。,3.以数据的读取或写入而言,流可分为输入流与输出流两种。,4.可以通过InputStream、OutputStream、Reader与Writer类来处理流的输入与输出。,5.Reader与Writer类可用来处理字符串的读取和写入的操作,通常是以它们的派生类来创建实体对象,再利用它们来处理读写操作。,6.BufferedWriter类里的newLine()方法可写入换行字符,而且与操作系统无关,使用它可确保程序可跨平台运行。,7.InputStream与OutputSteram类及其子类可用来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咨询立项方案
- 梅州开业活动策划方案模板
- 襄阳线上营销活动策划方案
- 建筑方案设计主创招聘信息
- 台州提高建筑质量方案设计
- 玄武区营销推广方案策划
- 咨询灭蟑螂方案
- 建筑师方案设计汇报
- 校园安全教育方案
- 十岁成长礼活动方案(共3篇)
- 车险诉讼案件培训课件
- 跨学科实践活动07 垃圾的分类与回收利用(活动设计)-2024-2025学年九年级化学跨学科实践活动教学说课稿+设计(人教版2024)
- 医院后勤技术人员考试试题及答案
- 产品开发版本管理办法
- 第2章-静电场和恒定电场
- 2025年老年病学住院医师规培出科考试理论笔试答案及解析
- 激光武器物理课件
- 气瓶泄漏应急演练范文大全
- 用户运营基础知识培训课件
- 2025年环境保护法知识竞赛题库(附含答案)
- (2025年标准)直播买手协议书
评论
0/150
提交评论