




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7Java输入输出系统,内容,什么是流流的分类字节流,字符流,处理流文件IO操作文件类File标准输入输出对象的序列化,什么是流?,Stream,Stream,Stream,Stream,Astreamisapathofinformationfromasourcetoadestination,.doc.txt,什么是流?,程序设计语言借用水流、电流等概念,将流动的数据称为“流”。流可以有各种来源和目的地,如标准输入输出、文件、网络等,也可以有各种不同的用途和处理方法,因而有许多分类。Java关于流的设计思想是:提供各种不同的流类,由程序员进行组合使用,以提供最大的灵活性。,流的功能概述,Java提供了不同的流类以实现如下的功能标准输入输出文件输入输出文本文件/二进制文件顺序读写/随机读写java.nio包进一步提供了异步数据读写、内存映射文件、文件锁等功能网络数据读写将对象存储为流/从流中读取对象,称为对象的序列化或串行化(Serialization),流的分类,java.io包提供了多个流类来实现输入输出功能:按照数据流的方向不同分为输入流和输出流按照处理数据单位的不同分为字节流和字符流按照功能不同可以分为节点流和处理流(或者称过滤流,Filter),流的分类,InputStream,OutputStream,Reader,Writer,ByteStreams,CharacterStreams,读写以字节为单位进行,读写以字符为单位进行,流的分类,节点流(nodestream)对指定的地方(磁盘文件、内存等)读/写处理流(filterstream)一个处理流使用节点流作为输入或输出。,目的地,数据源,InputStream的分类,InputStream是字节输入流。它的几种输入源可以是:1.一个字节数组2.一个文件3.一个管道,InputStream的分类,常用的InputStream流有下列几个:ByteArrayInputStreamFileInputStreamPipedInputStream,/把字节数组转换为输入流,/从文件中读取数据,/连接一个PipedOutputStream,InputStream的方法,InputStream的常用方法:publicabstractintread()throwsIOExceptionpublicintread(bytedata)throwsIOExceptionpublicintread(bytedata,intoffset,intlength)throwsIOExceptionpubliclongskip(longn)throwsIOExceptionpublicintavailable()throwsIOExceptionpublicvoidclose()throwsIOExceptionpublicvoidmark(intreadlimit)publicvoidreset()throwsIOExceptionpublicbooleanmarkSupported(),OutputStream的分类,OutputStream是字节输出流。它的几种输出目的地可以是:1.一个字节数组2.一个文件3.一个管道,OutputStream的分类,常用的OutputStream流有下列几个:ByteArrayOutputStreamFileOutputStreamPipedOutputStream,OutputStream的方法,OutputStream的常用方法:publicabstractvoidwrite(intb)throwsIOExceptionpublicvoidwrite(bytedata)throwsIOExceptionpublicvoidwrite(bytedata,intoffset,intlength)throwsIOExceptionpublicvoidflush()throwsIOExceptionpublicvoidclose()throwsIOException,字节流示例,TestFileInputStream.javaTestFileOutputStream.java,Reader3.PrintWriterout=newPrintWriter(4.newBufferedWriter(5.newFileWriter(out.txt);6.Strings;7.inti=1;8.while(s=in.readLine()!=null)9.out.println(line+i+=+s);10.i+;11.12.in.close();13.out.close();14.catch(FileNotFoundExceptione)15.System.err.println(cannotopenin.txt);16.catch(IOExceptione)17.System.err.println(I/Oexception);18.,FileIO.java代码,例1:文件I/O举例,firstsecondthirdforthfifthsixthseventh,line1=firstline2=secondline3=thirdline4=forthline5=fifthline6=sixthline7=seventh,正确运行后,例1:文件I/O举例,如果在当前目录下没有in.txt文件,则运行返回结果如下:,例2:DataOutputStream举例,这个例子使用DataOutputStream过滤流,生成一个文件。,Stream,1.importjava.io.*;2.publicclassDataIODemo3.publicstaticvoidmain(Stringargs)4.tryDataOutputStreamout=newDataOutputStream(newFileOutputStream(text.dat);7.doubleprices=6.55,9.99,1.8,2.33,0.90;8.intunits=12,9,5,6,7;Stringdescs=chicken,beef,lettuce,potato,tomato;10.for(inti=0;iprices.length;i+)11.out.writeDouble(pricesi);out.writeChar(t);12.out.writeInt(unitsi);out.writeChar(t);13.out.writeChars(descsi);out.writeChar(n);14.15.out.close();16.catch(IOExceptione)17.18.,DataIODemo.java,例3:DataInputStream举例,这个例子使用DataInputStream过滤流。读取例2生成的文件。,Stream,1.importjava.io.*;2.publicclassDataIODemo23.publicstaticvoidmain(Stringarg)4.DataInputStreamin=null;5.try6.in=newDataInputStream(newFileInputStream(text.dat);7.doubleprice,total=0.0;8.intunit;charch;StringBufferdesc;9.while(true)10.price=in.readDouble();in.readChar();11.unit=in.readInt();in.readChar();12.desc=newStringBuffer(20);13.while(ch=in.readChar()!=n)14.desc.append(ch);15.total=price*unit;16.System.out.println(youordered:+desc17.+t+price+*+unit+=+total);18.19.,DataIODemo2.java,接上页20.catch(EOFExceptione)21.try22.in.close();23.catch(IOExceptione1)24.25.catch(IOExceptione)26.27.,DataIODemo2.java,File类,java.io.File类提供文件与目录的各种有用信息File类并不打开文件,也不处理文件内容例:Filef1=newFile(/etc/passwd);Filef2=newFile(/etc,passwd);File类的对象经常作为文件流类构造方法的参数,File类,通过方法exists()判断文件或路径是否存在创建了类File的实例对象,并不等价于在硬盘上创建该文件FileOutputStream在删除文件内容时,没有警告信息File的实例对象可以判断出文件是否存在,提供警告信息,或改变打开文件方式,路径或文件名中的分隔符,分隔符分隔路径中的目录名、子目录名以及文件名/(Unix)或(Windows)这两种分隔符Java均可以识别在字符串常量中用/或最正规的方法是使用File.separator静态字段,File类示例,TestFile.java,格式化文本输出,格式化文本输出类:PrintStream和PrintWriter前者将所有字符按照平台默认的字符编码转换为字节,后者直接写入字符这两个类提供了print(),println(),printf()等常用方法以方便格式化输出这两个类的一个重要特点是输出时不抛出IOException示例:TestPrintStream1.java/TestPrintStream2.java,标准输入输出,标准输入默认是指从键盘输入,Java用System.in来指向系统的标准输入System.in的类型是InputStream,其重要的方法是read()现在更方便的做法是使用Scanner类由于历史的原因,System.out的类型是PrintStream,而不是PrintWriter,其重要方法有print()、println()、write()、flush()等,如何读取文本文件中的数据,如果不必按行分析,可直接使用Scanner如果需要按行分析数据,且每行的数据不一样多,可利用BufferedReader套在FileReader上,利用前者的readLine()读取一行,然后利用所读取的一行字符串构造Scanner对象进行处理;或者用String类的split()方法分解这一行,然后用各个基本数据类型封装类的ParseXxx()方法进行转换也可以使用Scanner的nextLine()方法,读取一行,然后对这一行作上述的分析,小专题,实验,假设文本文件abc1.txt中有一些数据,分为若干行,每行有一些个数不等的整数,用空格隔开。写一个程序读入该文件中的数据,对每行数据从小到大进行排序,然后按行输出到文本文件abc2.txt中,输出的文件中数据的格式与输入文件相同。,123577451234567912118901-11234567890-45-1543216713345678999811111111111,文件IO小结,二进制数据输入输出,用DataInputStream/DataOutputStream(二进制)随机文件读写,用RandomAccessFile文本数据格式化输出,用PrintWriter文本数据输入,可以用Scanner类,或者用BufferedReader读入一行,然后用String类的split()方法分解这一行,然后用各个基本数据类型封装类的ParseXxx()方法进行转换,*综合示例,TextFileTest.javaRandomFileTest.java,对象序列化,Java提供一种机制,能够将内存中存在的对象转化为流,以便保存到文件中,或者通过网络进行传输等等。这种机制称为序列化。Java利用ObjectInputStream类和ObjectOutputStream类创建对象输入流和对象输出流。对象输出流使用writeObject(Objectobj)方法将一个对象obj写入输出流送往目的地,对象输入流使用readObject()从源中读取一个对象到程序中。ObjectInputStream类和ObjectOutputStream类的构造方法分别是:ObjectInputStream(InputStreamin),ObjectOutputStream(OutputStreamout)。,Serializable接口,一个类的对象若要进行序列化,必须实现Serializable接口。Serializable接口没有任何方法,是一个标记接口(JDK5.0以后,要求实现了Serializable接口的类提供一个serialV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国青年公寓行业标准化建设与服务质量提升研究
- 2025-2030中国青年公寓行业市场饱和度与增长潜力研究报告
- 2025-2030中国青年公寓行业信用体系建设与租赁金融创新
- 2025-2030中国青年公寓消费行为与商业模式创新研究报告
- 2025-2030中国青年公寓市场供应链整合及投资可行性研究
- 2025-2030中国青年公寓产品创新与空间设计趋势研究
- 养殖及畜牧产业协作合同
- 传染病防治监测预防控制手册细则
- 宠物寄养服务行业安全责任合同
- 品牌联想与呈现通道:解锁延伸产品购买意向的密码
- 煤炭分选工艺中的安全操作标准
- 教科版科学五年级上册《光》单元教材解读培训PPT
- 超早期脑梗死的CT影像表现及诊断课件
- 拉西地平原料制药课程设计说明书
- 小学体育-小学二年级《单双脚跳》教学设计学情分析教材分析课后反思
- ××领导班子及成员分析研判报告
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- Frenchay构音障碍评定
- 教育学原理课后答案主编项贤明
- 建筑装饰施工技术-轻质隔墙工程施工课件(-)
- 语言领域核心经验《学前儿童语言学习与发展核心经验》
评论
0/150
提交评论