




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章 输入输出流编程,教学目的要求 1.理解 java 语言中输入/输出流的处理方法; 2.掌握文件、字节流和字符流的处理方法,正确使用对象串行化的方法。,13.1 file类应用举例,文件操作是程序设计必不可少的部分。计算机把需要长期保存的数据以文件的形式存放在各种外部存储设备上。在需要输入数据时,从文件读出数据;而需要输出数据时,把数据写入文件。,13.1.1 file类用来获取文件或目录的信息,java把目录看成特殊的文件,作为文件名的列表处理,file类提供方法用以访问诸如路径、名称、大小、日期、读写属性等文件或目录的信息。也可以创建、删除文件、改变文件名、创建目录等。file类的直接父类是object。,1. file类的构造方法,file类中常用的构造方法如下: public file(string pathname) 其中的pathname是路径名字符串。该构造方法通过将给定路径名字符串转换成抽象路径名来创建一个新file实例。若给定字符串pathname是空字符串,则结果是空的抽象路径名。 public file(file parent,string child) 其中的parent是父抽象路径名、child是子路径名字符串。该构造方法根据parent抽象路径名和child路径名字符串创建一个新file实例。,public file(string parent,string child) 其中参数parent是父路径名字符串、child是子路径名字符串。该构造方法根据parent路径名字符串和child路径名字符串创建一个新file实例。如果parent为null,则创建一个新的file实例,这与调用单参数file方法,以给定child路径名字符串作为参数的效果一样。否则,parent路径名字符串用于表示目录,而child路径名字符串用于表示目录或文件。如果 child路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果parent是空字符串,则新的file实例是通过将child转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。,2.file类中的常用成员方法,file类中有许多成员方法,常用的成员方法及其功能概要描述见表13-1。限于篇幅的原因,读者在使用时可以参考java api中对这些成员方法用法详细的说明。,public boolean canread()测试应用程序能否读此对象指定的文件 public boolean canwrite()测试应用程序能否写此对象指定的文件 public boolean exists()测试此抽象路径名表示的文件或目录是否存 public boolean isfile()测试此抽象路径名表示的文件是否是一个标准文件 public string getabsolutepath()返回抽象路径名的绝对路径名字符串 public string getpath()将此抽象路径名转换为一个路径名字符串 public string getparent()获取此对象指定的文件的父目录 public boolean mkdir()根据当前对象生成一个由该对象指定的路径 public string list()列出当前目录下的文件 public long length()返回由此抽象路径名表示的文件的长度 public string getname()获取此对象指定的文件的文件名 public boolean delete()删除此抽象路径名表示的文件或目录 public long lastmodified()获取此对象指定文件的最后修改时间(以长整型值表示),file类中的常用成员方法方法和描述,3.类变量(静态数据成员),file类中的静态数据成员及其概要,例13.1 测试静态数据成员属性。,例13.2 构造file对象、测试文件的属性等有关信息应用举例。,注意,本例程序在运行前,读者应确保d:jdk15文件夹中有filemethod.java,当然,文件夹的名字也可由读者命名,但是,要注意同时更改程序中的相应文件夹名称。 例13.3构造一个目录file对象,如果该指定的目录不存则创建该目录,同时统计并显示该目录下文件和子目录的个数以及该目录下文件的总长度。,13.1.2 文件的处理,文件输入/输出流类fileinputstream和fileoutputstream提供了对文件顺序读/写的方法。文件输入流类fileinputstream用于读取文件中的字节数据,其直接父类为inputstream;文件输出流类fileoutputstream用于向文件写入的字节数据,其直接父类为outputstream。,1.fileinputstream类的构造方法,public fileinputstream(string name) 其中的name可以包含路径名和文件名,该构造方法通过打开一个到实际文件的连接来创建一个fileinputstream,该文件通过文件系统中的路径名name指定。 public fileinputstream(file file) 其中的file是file类的对象,该构造方法通过打开一个到实际文件的连接来创建一个fileinputstream,该文件通过文件系统中的 file对象file指定。 public fileinputstream(filedescriptor fd) 该构造方法通过使用文件描述符fdobj创建一个fileinputstream,该文件描述符表示到文件系统中某个实际文件的现有连接。,2.fileoutputstream类的构造方法,public fileoutputstream(string name) 该构造方法使用指定的字符串name创建一个向具有指定名称的文件中写入数据的输出文件流。 public fileoutstream(file file) 该构造方法使用指定的文件file创建一个向指定file对象表示的文件中写入数据的文件输出流。 public fileoutputstream(file file,boolean append) 创建一个向指定file对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。,3.fileinputstream类的成员方法,fileinputstream类中的成员方法被调用时会产生ioexception异常,常用成员方法见下表的描述。,4.fileoutputstream类的成员方法,fileoutputstream类中的成员方法被调用时会产生ioexception异常,常用成员方法见下表的描述。,例13.4读文件和写文件举例。假设在d:有文件li13_04.java,编程实现把该文件原样复制后存放在c:,文件名为li13_04_filecopy.txt。,13.2.1 reader和writer,java提供了一系列用于处理字符流的接口和类,如reader和writer类,通过它们派生的子类对象来处理字符流。 reader类和writer类提供的方法分别见表13-5和表13-6中的描述,注意它们被调用时也会产生异常。,13.2 reader与writer类应用举例,从jdk1.1开始,java.io包中加入了专门用于处理字符流输入/输出的类,它们的基类分别是抽象类reader及抽象类writer。,reader类中的常用方法,writer类中的常用方法,13.2.2 inputstreamreader和outputstreamwriter,inputstreamreader从输入流中读取字节数据,并将其转换为特定的平台上的字符数据,其构造方法为: public inputstreamreader(inputstream in) 其中参数in是inputstream的对象,该构造方法可以创建一个使用默认字符集的inputstreamreader。 public inputstreamreader(inputstream in,string enc) 创建使用指定字符集的inputstreamreader。 inputstreamreader的成员方法描述见表13-7,注意这些方法在被调用时也会产生异常。,inputstreamreader类中的常用方法,outputstreamwriter将特定平台的字符数据转换为字节数据,写入到输出流,其构造方法为:,public outputstreamwriter(outputstream out) 其中参数out是outputstream对象,该构造方法用来创建使用默认字符编码的 outputstreamwriter。 public outputstreamwriter(outputstream out,string enc) 其中参数out是 outputstream对象,参数enc是字符串名称,该构造方法创建使用指定字符集的 outputstreamwriter。 outputstreamwriter的成员方法描述见表13-8,注意这些方法在被调用时也会产生异常。,outputstreamwriter类中的常用方法,例13.5读字符流文件: 从给定的输入文件中读取字符流并在标准终端显示。,import java.io.*; public class li13_05 public static void main(string args)throws ioexception int c; fileinputstream is; inputstreamreader ir; is=new fileinputstream(“charinput.java“); ir=new inputstreamreader(is); system.out.println(“-程序开始-“); while(c=ir.read()!=-1) system.out.print(char)c); system.out.println(“-程序结束-“); ,例13.6写字符流文件: 从标准终端上输入字符并写入字符输出文件。,import java.io.*; public class li13_06 public static void main(string args)throws ioexception int c; inputstreamreader ir=new inputstreamreader(system.in); fileoutputstream os=new fileoutputstream(“c:/hhh.txt“); outputstreamwriter or=new outputstreamwriter(os); system.out.print(“请输入字符(输入x结束,运行结束后请查看c:/hhh.txt):“); while(c=ir.read()!=x) or.write(char)c); or.close(); os.close(); ,例13.7读一行字符: 从文件中按行读出文件中的各个字符并在标准终端上输出,文件名由命令行参数给出。,import java.io.*; public class li13_07 public static void main(string args) throws ioexception inputstream is=new fileinputstream(args0); inputstreamreader in=new inputstreamreader(is); bufferedreader br=new bufferedreader(in); string str; int c=0; while(str=br.readline()!=null) /每次从文件中读一行字符 system.out.println(str); ,inputstream与outputstream类应用举例,java.io包中包含的两个基本的字节流类inputstream与outputstream是所有字节流的基类。它们提供的方法通常在子类中被覆盖,以适合于特定的字节流的需要,提供最基本的输入/输出功能。,13.3.1 inputstream类,inputstream抽象类中定义了所有输入字节流都需要的方法,完成最基本的从输入流读入数据的功能: public int read() public int read(byte b) public int read(byte b,int off,int len) public int available() public long skip(long n) public void mark() public void reset() public boolean mark supporeed() public void close(),具体使用时,从inputstream派生的子类中创建对象,完成不同情况下的输入操作。inputstream的常用子类如下: bytearrayinputstream:把内存中的一个缓冲区作为inputstream使用; stringbufferinputstream:把一个string对象作为inputstream; fileinputstream:把一个文件作为inputstream,实现对文件的读取操作; pipedinputstream:实现了pipe的概念,主要在线程中使用; sequenceinputstream:把多个inputstream合并为一个inputstream。,13.3.2 outputstream类,outputstream抽象类中定义了所有字节输出流都需要的方法,完成向输出流写入数据的功能。 public void write(int b) public void write(byte b) public void write(byte b,int off,int len) public void flush() public void close(),具体使用时,从outputstream派生的子类中创建对象,完成不同情况下的输出操作。outputstream的常用子类如下: bytearrayoutputstream:把信息存入内存中的一个缓冲区中; fileoutputstream:把信息存入文件中; pipedoutputstream:实现了pipe的概念,主要在线程中使用; sequenceoutputstream:把多个outputstream合并为一个outputstream。,例13.8最基本的输入输出方法应用举例: 键盘读入单个字节字符,多个字节字符并在屏幕输出显示。,例13.9管道流类pipedinputstream和pipedoutputstream应用举例。,import java.io.*;/管道流的使用 public class li13_09 public static void main(string args)throws exception pipedinputstream pis; pipedoutputstream pos; byte b; pis=new pipedinputstream(); pos=new pipedoutputstream(pis); /流pos的输出作为流pis的输入 pos.write(a); /流pos的输出 pos.write(b); /流pos的输出 b=(byte)pis.read(); /流pis的输入 system.out.println(b); b=(byte)pis.read(); /流pis的输入 system.out.println(b); ,13.4 数据流应用举例,datainputstream 和dataoutputstream分别是过滤流filterinputstream 和filteroutputstream的子类,它们不仅能读/写字节流,而且能读/写java语言的基本数据类型,这些基本数据类型在流中的表示与在内存中一样,不需转换。 datainputstream实现了接口datainput中定义的与平台无关的带格式的读操作,从而实现了不同数据类型的读操作,其构造方法为: datainputstream(inputstream in),public int read(byte b) public int read(byte b, int off, int len) public boolean readboolean() public byte readbyte() public char readchar() public double readdouble() public float readfloat() public void readfully(byte b) public void readfully(byte b, int off, int len) public int readint() public string readline() public long readlong() public short readshort() public int readunsignedbyte() public int readunsignedshort() public string readutf() public static string readutf(datainput in) public int skipbytes(int n),datainputstream类的成员方法如下:,dataoutputstream实现了接口dataoutput中定义了与平台无关的带格式的写操作,从而实现了对不同数据类型的写操作,其构造方法为: dataoutputstream(outputstream out),public void flush() public int size() public void wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030茶饮料行业市场深度分析及前景趋势与投资研究报告
- 针对性提升2025年乡村全科执业助理医师考试的学习效率试题及答案
- 药用植物识别与使用试题及答案
- 驾考满分模拟试题及答案
- 激光技术在医疗中的应用考题试题及答案
- 计算机二级考试指导手册学习试题及答案
- 激光传感技术原理试题及答案
- 资金流动管理试题及答案
- 财税相关法律法规试题及答案
- 2025年智能用电系统产品项目建议书
- 幼儿园教师普法教育培训
- 2024山东省新高考志愿规划
- 彩钢板吊顶施工工艺
- 神经外科常见引流管护理课件
- 让学生看见你的爱
- 脑梗死病人的健康宣教课件
- 房地产销售技巧汇总课件
- 老年性阴道炎的科普知识
- 文旅生态小镇案例分析报告
- 康复医学科病历模板
- 陈皮促销主题活动方案
评论
0/150
提交评论