




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java文件与流,第6章,2,6.1引言和本章任务,理解Java流类的层次关系;掌握InputStream和OutputStream类及其一些重要子类的用法;能区分字节流和字符流的概念;掌握随机访问文件的处理;学会利用File类来获取文件的各种信息。,3,6.2基础知识链接,4,6.2.1Java文件与流概述(1),Object,RandomAccessFile,InputStrean,OutputStrean,File,FileOutputStrean,FilterOutputStrean,PipeOutputStrean,FileInputStrean,FilterInputStrean,PipeInputStrean,5,流的分类(2),按处理数据的类型,流可以分为字节流与字符流,输入字节流的类为InputStream,输出字节流为OutputStream,输入字符流为Reader,输出字符流为WriterInputStream类和OutputStream类是Java的两个主要流类,这两个类主要用来处理字节流,它们都是抽象类。对于标准输入System.in和标准输出System.out都是它们的子类。,6,流的分类(3),Reader类与InputStream类基本功能相同,只是Reader类以字符(char)为单位读入。Writer类与OutputStream类基本功能也相同,只是Writer类也是以字符(char)为单位读入。Java提供RandomAccessFile类来实现随机访问存储在文件不同位置的记录,即随机文件存取。,7,流的分类(4),Java还提供了一个File类用于获取磁盘中的文件或目录信息,File类的对象并不打开文件,也不提供任何文件处理功能。,8,6.2.2标准输入输出(1),在JDK中提供了一个System类,该类用于管理标准输入输出流和错误流当用户开始运行Java应用程序或applet时,会自动建立3个对象:System.in、System.out、Syetem.err,与这些对象相联系的流可以为程序提供与指定文件或设备间的通信信道。,9,标准输入输出(2),System.in是属于BufferedInputStream类型System.out是属于PrintStream类型System.err也是属于PrintStream类型,10,PrintStream类,PrintStream类println()是PrintStream类的方法,能提供复杂的输出PrintStream类的方法有:write,flush,checkError,print,println,close.其中println可以输出多种形式的数据.例如:println(Strings),println(charc)等,11,6.2.3字节流,InputStream类和OutputStream类用于来处理字节流,前面介绍了,这两个类都是抽象类,它们分别为其子类定义了文件处理一些通用处理方法。,12,字节流(2):InputStream类,属于InputStream类的方法有:read():从流中读入数据skip():跳过流中若干字节数available():返回流中可用字节数mark():在流中标记一个位置reset():返回标记过的位置markSupport():是否支持标记和复位操作close():关闭流,13,字节流(3):InputStream类,InputStream类重要的子类有:FileInputStream,FilterInputStream,PipedInputStream,14,字节流(4):OutputStream类,属于OutputStream类的方法有:write(intb):将一个整数输出到流中write(byteb):将数组中的数据输出到流中write(byteb,intoff,intlen):将数组b中从off指定的位置开始len长度的数据输出到流中flush():将缓冲区中的数据强制送出close():关闭流,15,字节流(5):OutputStream类,OutputStream类重要的子类有:FileOutputStream,FilterOutputStream,PipedOutputStream,16,文件输入输出流,从磁盘文件中读取数据,或者将数据写入文件,需要用文件输入、输出流类FileInputStream和FileOutputStream。例如:FilemyFile=newFile(“MyFile”);DataInputStreamdin=newDataInputStream(newFileInputStream(MyFile);DataOutputStreamdout=newDataOutputStream(newFileOutputStream(MyFile);,17,过滤流,FilterInputStream和FilterOutputStream提供了一些额外的功能,这些功能提供监视行号、缓冲功能等。其重要的子类有:BufferedInputStream,DataInputStream,18,缓冲区流(1),增加缓冲区流,减少访问硬盘的次数,提高效率,file1.txt,file2.txt,输入流,输出流,输入缓冲区,输出缓冲区,19,缓冲区流(2),缓冲区流:BufferedInputStream和BufferedOutputStream将它们与文件流相接FileInputStreamin=newFileInputStream(“file1.txt”);BufferedInputStreambin=newBufferedInputStream(in,256);/256字节大小的buffer,20,缓冲区流(3),只有缓冲区满时,才会将数据送到输出流.Java在输出数据流中,当对方尚未将数据取走时,程序就会被阻塞.有时要人为地将尚未填满的缓冲区中的数据送出,使用flush()方法.,文件,21,数据输入输出流(1),文件流和缓冲区流的处理对象是字节或字节数组,利用数据输入输出流可以实现对文件的不同数据类型的读写.DataInputStream、DataOutputStream一种较为高级的数据输入输出方式,除了字节和字节数组,还可以处理int,float,boolean等类型.还可以用readLine方法读取一行信息可使用的方法:write,writeBoolean,read,readByte等,22,数据输入输出流(2),数据流的建立FileOutputStreamfos=newFileOutputStream(”file2.txt);DataInputStreamdis=newDataInputStream(fos)数据输出流可以是一个已经建立好的输入数据流对象,例如网络的连结,文件等。下面的例子显示如何利用数据输入输出流往文件中写不同类型的数据,23,数据输入输出流(3),classDatainput_outputpublicstaticvoidmain(Stringargs)throwsIOExceptionFileOutputStreamfos=newFileOutputStream(“a.txt”);DataOutputStreamdos=newDataOutputStream(fos);trydos.writeBoolean(true);dos.writeByte(byte)123);dos.writeChar(J);dos.writeDouble(3.141592654);dos.writeFloat(2.7182f);dos.writeInt(1234567890);dos.writeLong(998877665544332211L);dos.writeShort(short)11223);finallydos.close();,24,数据输入输出流(4),DataInputStreamdis=newDataInputStream(newFileInputStream(”a.txt);trySystem.out.println(t+dis.readBoolean();System.out.println(t+dis.readByte();System.out.println(t+dis.readChar();System.out.println(t+dis.readDouble();System.out.println(t+dis.readFloat();System.out.println(t+dis.readInt();System.out.println(t+dis.readLong();System.out.println(t+dis.readShort();finallydis.close();,25,6.2.4字符流,InputStream类和OutputStream类用于来处理字节流Reader类和Writer类则用来处理字符流Reader类和Writer类提供的主要接口方法与InputStream类和OutputStream类非常类似,只是将基于byte类型的参数改为基于char的参数Reader类和Writer类的接口方法都是抽象方法,没有具体的实现。,26,6.3案例6及其分析:对文件进行加密,具体分析见书上,27,6.4扩展知识,28,6.4.1随机访问文件,类RandomAccessFile目录文件给出个文件的入口,可以随机读取.创建一个随机文件newRandomAccessFile(“file1.txt”,“r”);newRandomAccessFile(“file2.txt”,“rw”);随机文件可以同时完成读和写操作.,29,随机存取文件(2),支持随机文件操作的方法:readXXX()或writeXXX()skipBytes();将指针乡下移动若干字节seek():将指针调到所需位置getFilePointer():返回指针当前位置length():返回文件长度利用seek(longpos)方法查找随机文件中的信息例:把若干个32位的整数写到一个名为“temp.txt”的文件中,然后利用seek方法,以相反的顺序再读取这些数据,30,随机存取文件(3),importjava.io.*;publicclassRandomFilepublicstaticvoidmain(Stringargs)intdata_arr=12,31,56,23,27,1,43,65,4,99;tryRandomAccessFilerandf=newRandomAccessFile(temp.txt,rw);for(inti=0;i=0;i-)randf.seek(i*4);System.out.println(randf.readInt();randf.close();catch(IOExceptione)System.out.println(Fileaccesserror:+e);,31,随机存取文件(4),32,6.4.2File类,File类并不能真正打开一个文件或提供任何文件操作功能,它主要的功能是检查一个文件是否存在以及使用文件类获取文件的路径信息等设f是一个文件对象Filef=newFile(“data”,temp.dat”);f.getName():返回文件名temp.datf.getParent():返回文件所在目录名dataf.getPath():返回文件路径datatemp.datf.getAbsolutePath():返回绝对路径c:myprogdatatemp.dat,33,文件的其它操作-File类,例:获取当前目录下所有文件名和文件的尺寸:importjava.io.*;publicclassfile_sizepublicstaticvoidmain(Stringargs)Filefiles=newFile(“.”);Stringfile_list=files.list();for(inti=0;ifile_list.length;i+)Filecurrent_file=newFile(file_listi);System.out.println(file_listi+current_file.length();,34,File类的其它方法,booleancanRead():文件是否可读booleancanWrite():文件是否可写booleanexists():文件是否存在booleanisFile():是否是文件booleanisDirectory():是否是路径,35,小结2-1,在Java中有数据传输的地方都用到I/O流(通常是文件,网络,内存和标准输入输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025机务考试题目及答案
- 2025中航培训面试题及答案
- 2025模拟飞行理论试题及答案
- 2025至2030年中国全棉人字斜绒布市场分析及竞争策略研究报告
- 安全招聘考试试题及答案
- 高空作业维修施工合同(3篇)
- 高空水管施工合同范本(3篇)
- 爱心树心理测试题及答案
- 电动汽车充电桩建设与运维项目融资合同
- 知识产权质押担保贷款协议
- 2025-2030中国汽车减震器市场战略规划及竞争力策略分析研究报告
- 食其家面试试题及答案
- 矿山工程企业制定与实施新质生产力战略研究报告
- 麻精药品管理培训
- 顾客特殊要求培训课件
- 九年级英语宾语从句专项训练题及答案
- 医疗仪器设备效益考核办法
- 生产产能提升激励方案
- 车间5S管理培训
- 2025年度汽车销量目标达成合作协议模板
- 《生物技术在环境保护中的应用》课件
评论
0/150
提交评论