《Java面向对象程序设计(第4版)》课件chapter12 输入和输出流处理.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java面向对象程序设计(第4版)》课件chapter12 输入和输出流处理.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java面向对象程序设计第4版 Java面向对象程序设计第4版课件chapter12 输入和输出流处理 Java 面向 对象 程序设计 课件 chapter12 输入 输出 处理
- 资源描述:
-
1、教学目标教学目标n输入和输出流概述n输入流和输出流n字节流和字符流n输入和输出类的继承层次结构nFile类n基于字节的输入和输出类及应用实例n抽象类InputStream和OutputStreamnFileInputStream和FileOutputStream类n随机访问文件类n过滤字节流 教学目标教学目标(续续)n标准输入输出流n对象流n管道流n内存读写流n序列输入流n基于字符的输入和输出类及应用实例nInputStreamReader和OutputStreamWriter类nBufferedReader和BufferedWriter类n其它字符流 11.1 输入和输出流概述输入和输出流概
2、述11.1.1 11.1.1 输入流和输出流输入流和输出流n 程序往往需要输入/输出处理,比如n从键盘读取数据、向屏幕中输出数据、从文件中读数据n或者向文件中写数据、在一个网络连接上进行读写操作等。n在Java中,把这些不同类型的输入、输出源抽象为流(Stream)11.1.1 11.1.1 输入流和输出流输入流和输出流nJava的流分类:n输入流输入流(Input Stream):能够读取字节序列的对象,n输出流输出流(Output Stream):能够写字节序列的对象。如:一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。如:键盘是一个输入流,屏幕是一个输
3、出流。11.1.2 11.1.2 字节流和字符流字节流和字符流 nJava 2定义了两种类型的流:n字节流字节流:以byte(8 bits)为基本处理单位的流,这些类分别由抽象类InputStream和OutputStream派生的类层次。n字符流字符流:处理使用Unicode(每个字符使用两个字节)的数据,是从抽象类Reader和Writer的派生的类层次,用于读写双字节的Unicode字符.面向字节流的输入输出类层次结构 面向字符流的输入输出类层次结构 11.2 File11.2 File类类n File类主要用于获取磁盘中文件或目录的各种信息。n构造File类对象的构造函数:public
4、 Fle(String pathName)指定与File对象关联的文件或目录的名称。pathName可以是包含路径信息的文件名或目录名。路径可为绝对路径或为相对路径。11.2 File11.2 File类类(续续)例如:File f=new File(“datatemp.dat”);/相对路径 File g=new File(“d:javadatatemp.dat”);/绝对路径nFileFile类的一些常见方法:类的一些常见方法:String getName():返回文件名;String getParent():返回文件所在目录名;String getPath():返回文件路径;String
5、 getAbsolutePath():返回绝对路径;boolean exists():文件是否存在;boolean canWrite():文件是否可写、读;11.2 File11.2 File类类(续续)boolean isFile():是否为文件boolean isDirectory():是否为目录;long lastModified():文件的最后修改日期;long length():返回文件的长度;boolean delete():删除文件或目录。删除成功返回true,否则返回false;boolean mkdir();创建一个目录。目录创建成功,返回true,否则返回false;Str
6、ing list():返回一个代表目录下的所有文件的字符串数组。11.2 File11.2 File类类(续续)例如:File f=new File(“datatemp.dat”);上述引用变量f调用相应的方法,得到的值:f.getName():返回 temp.datf.getParent():返回 dataf.getPath():返回 datatemp.datf.getAbsolutePath():返回 d:javadatatemp.datf.exists():若datatemp.dat文件存在返回 true,否则返回false11.2 File11.2 File类类(续续)nFile类另一
7、构造函数:public File(URI uri)使用给定的URI(uniform resource identifier,URI)对 象来定位文件。用于定位Web站点上的资源.例如,http:/ 11.3 基于基于字节字节的输入和输出类及应用实例的输入和输出类及应用实例 n抽象类InputStream和OutputStreamnFileInputStream和FileOutputStream类n随机访问文件类n过滤字节流n标准输入输出流n对象流n管道流n内存读写流n序列输入流抽象类抽象类InputStreamInputStream和和OutputStreamOutputStreamnInpu
8、tStream(输入流类)和OutputStream(输出流类),它们都是抽象类.分别声明了基于字节的输入和输出方法。nInputStreamInputStream类的方法:类的方法:read():从流中读入数据;skip():跳过数据流中指定数量的字节不读,返回值表示实际跳过的字节数;available():返回流中可用字节数;mark():在流中当前位置标记一个位置;reset():返回上一个标记过的位置,用于从这一位置读取;抽象类抽象类InputStreamInputStream和和OutputStreamOutputStream(续续)markSupport():是否支持标记和复位操作
9、;close():关闭流。nInputStreamInputStream类的方法类的方法read()read()又又提供了三种从流中读数据的提供了三种从流中读数据的方法:方法:int read():从输入流中读一个字节,形成一个0255之间的整数返回;int read(byte b):读多个字节到数组中,填满整个数组;int read(byte b,int off,int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取得字节数。对于上面的三个方法,若返回1,表明流结束。抽象类抽象类InputStreamInputStream和和OutputStrea
10、mOutputStream(续续)nOutputStreamOutputStream类的方法:类的方法:write(int b):将一个整数输出到流中(只输出低位字节,为抽象方法);write(byte b):将字节数组中的数据输出到流中;write(byte b,int off,int len):将数组b中从off指定的位置开始,长度为len的数据输出到流中;flush():刷空输出流,并将缓冲区中的数据强制送出;close():关闭流。FileInputStream FileInputStream和和FileOutputStreamFileOutputStream类类 (续续)nFileI
11、nputStream(文件输入流类)和FileOutputStream(文件输出流类)是基于字节的用于操作顺序文件的两个类。nFileInputStreamFileInputStream类:类:用于打开一个输入文件。若要打开的文件不存在,则会产生异常FileNotFoundException,这是一个非运行时异常,必须在方法中捕获或向上传递抛出异常。nFileOutputStreamFileOutputStream类类:用于打开一个输出文件。若要打开的文件不存在,则会创建一个新的文件,否则原文件的内容会被新写入的内容所覆盖。如果试图打开一个只读文件,将会引发一个 IOException异常。在
12、进行文件的读/写操作时,会产生非运行时异常IOException,必须在方法中捕获或向上传递抛出异常。FileInputStreamFileInputStream和和FileOutputStreamFileOutputStream类类(续续)n 创建输入文件流对象和输出文件流对象的的语句创建输入文件流对象和输出文件流对象的的语句:File f1=new File(“file1.txt”);/创建File对象 File f2=new File(“file2.txt”);FileInputStream in=new FileInputStream(f1);FileInputStream in=ne
13、w FileInputStream(f1);/向FileInputStream构造函数传递一个File对象 FileOutputStream out1=new FileOutputStream(f2);FileOutputStream out1=new FileOutputStream(f2);/向FileOutputStream构造函数传递一个File对象 FileOutputStream out2FileOutputStream out2=new FileOutputStream(=new FileOutputStream(“file3.txtfile3.txt”););输入流的构造函数的
14、参数是用于指定输入的文件名,输出流的构造函数参数则是用于指定输出的文件名。npublic FileOutputStreamFileOutputStream(File file,boolean append)throws FileNotFoundException Creates a file output stream to write to the file represented by the specified File object.If the second argument is true,then bytes will be written to the end of the f
15、ile rather than the beginning.A new FileDescriptor object is created to represent this file connection.First,if there is a security manager,its checkWrite method is called with the path represented by the file argument as its argument.If the file exists but is a directory rather than a regular file,
16、does not exist but cannot be created,or cannot be opened for any other reason then a FileNotFoundException is thrown.Parameters:file-the file to be opened for writing.append-if true,then bytes will be written to the end of the file rather than the beginning Throws:FileNotFoundException-if the file e
17、xists but is a directory rather than a regular file,does not exist but cannot be created,or cannot be opened for any other reason SecurityException-if a security manager exists and its checkWrite method denies write access to the file.FileInputStreamFileInputStream和和FileOutputStreamFileOutputStream类
18、类(续续)例例10-1 10-1 基于字节流的基于字节流的顺序文件的读写。顺序文件的读写。完成将一文件file1.txt的内容拷贝生成另一新文件file2.txt。package filestream;import java.io.*;class filestream public static void main(String args)try File inFile=new File(file1.txt);File outFile=new File(file2.txt);FileInputStream fis=new FileInputStream(inFile);FileOutputSt
19、ream fos=new FileOutputStream(outFile);int c;while(c=fis.read()!=-1)fos.write(c);fis.close();fos.close();catch(FileNotFoundException e)System.out.println(FileStreamsTest1:+e);catch(IOException e)System.err.println(FileStreamsTest2:+e);随机访问文件类随机访问文件类n随机文件可将每个连续的读写请求定位到文件的任何部随机文件可将每个连续的读写请求定位到文件的任何部分分
20、类nRandomAccessFile可用于随机文件的读写。它直接继承它直接继承objectobject,并且同时实现了接口,并且同时实现了接口DataInputDataInput和和DataOutputDataOutput。nDataInputDataInput接口接口中描述了用于从输入流中读取基本类型值的的一组方法,即从输入流中成组地读取字节,并将其视为基本类型值。nDataOutputDataOutput接口接口中描述了将基本类型值写入输出流中的的一组方法。随机访问文件类随机访问文件类(续续)n类类RandomAccessFileRandomAccessFile提供了支持随机文件操作的方法
21、有:提供了支持随机文件操作的方法有:XXX ReadXXX()XXX ReadXXX():XXXXXX对应基本数据类型对应基本数据类型。如如:int readInt():int readInt()、long readLong()long readLong()、byte readByte()byte readByte()、char readChar()char readChar()、unsignedByte readUnsignedByte()unsignedByte readUnsignedByte()等;等;void writeXXX()void writeXXX():XXXXXX对应基本数
22、据类型。对应基本数据类型。如如:writeInt:writeInt、writeLongwriteLong、writeBytewriteByte等等;String ReadLine():String ReadLine():从输入流中读取下一行;从输入流中读取下一行;int skipBytes(int n)int skipBytes(int n):将指针向下移动:将指针向下移动n n个字节个字节;long length()long length():返回文件长度:返回文件长度;long getFilePointer()long getFilePointer():返回指针当前位置:返回指针当前位置;
23、void seek(long pos)void seek(long pos):将指针调到所需位置。:将指针调到所需位置。随机访问文件类随机访问文件类(续续)n在生成一个随机文件对象时,构造函数的参数,除了要在生成一个随机文件对象时,构造函数的参数,除了要指明指明File对象或文件名之外,还需要指明访问文件的模式。对象或文件名之外,还需要指明访问文件的模式。例如:File f=new File(“file.txt”);new RandomAccessFile(f,“r”);new RandomAccessFile(f,“rw”);new RandomAccessFile(“file1.txt”,
24、“w”);new RandomAccessFile(“file2.txt”,“rw”);其中:“r”是只读模式,“w”是仅允许写模式,“rw”是可读可写模式。例例11-211-2随机文件的读写随机文件的读写例例11-2 11-2 随机文件的读写随机文件的读写 将整型数组中的10个数写入随机文件名temp.dat中,并以与写入顺序相反的次序从此文件中读入数据,显示在屏幕上。import java.io.*;public class random_file public static void main(String args)int data_arr=12,31,56,23,27,1,43,65
25、,4,99;try File f=new File(temp.dat);RandomAccessFile randf=new RandomAccessFile(f,rw);for(int i=0;i=0;i-)randf.seek(i*4);System.out.println(randf.readInt();randf.close();catch(IOException e)System.out.println(File access error:+e);11.3.4 11.3.4 过滤字节流过滤字节流n过滤字节流类:FilterInputStream和FilterOutputStream分
展开阅读全文