欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    9 输入输出流.ppt

    • 资源ID:88363961       资源大小:435.50KB        全文页数:62页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    9 输入输出流.ppt

    第九章第九章输入输入/输出处理输出处理2目标目标掌握输入掌握输入/输出流的输出流的概念概念和类的使用和类的使用掌握掌握文件字节流文件字节流的定义和使用的定义和使用掌握掌握文件字符流文件字符流的定义和使用的定义和使用掌握掌握文件随机访问文件随机访问了解文件操作相关类了解文件操作相关类对象串行化的概念和实现方法对象串行化的概念和实现方法了解其它常用流的定义和使用了解其它常用流的定义和使用39.1.1输入输入/输出流的概念输出流的概念数据流数据流:计算机系统中一组有顺的、有起计算机系统中一组有顺的、有起点和终点的数据序列。点和终点的数据序列。程序程序输入流输入流输出流输出流数据数据数据数据键盘键盘显示器显示器打印机打印机4文件文件程序程序00101文件文件程序程序00101程序程序00101程序程序010程序程序010010“hello”文件文件程序程序5缓存:缓存:相对内存较大的内存区域,用于数据相对内存较大的内存区域,用于数据进行输入或输出的临时存储。进行输入或输出的临时存储。I/O设备设备程序程序较慢较慢缓存缓存当使用了缓存之后,程序把大量字节移到缓存中,当使用了缓存之后,程序把大量字节移到缓存中,然后再通过缓存实现与程序的输入输出操作。然后再通过缓存实现与程序的输入输出操作。69.1.2输入输入/输出类输出类输入输出是相对程序来说的,程序扮演两个角输入输出是相对程序来说的,程序扮演两个角色:数据源和使用者。色:数据源和使用者。输入流输入流:从外界流入程序的数据序列;从外界流入程序的数据序列;输出流输出流:从程序流出到外界的数据序列。从程序流出到外界的数据序列。字节流字节流:在输入输出过程中以字节为单位。:在输入输出过程中以字节为单位。字符流字符流:在输入输出过程中以字符为单位。:在输入输出过程中以字符为单位。79.1.2输入输入/输出类输出类Java的的I/O库提供了操作数据流的类:库提供了操作数据流的类:(1)所有字节流类都是抽象类)所有字节流类都是抽象类InputStream、OutputStream的子类;的子类;(2)所有字符流类都是抽象类)所有字符流类都是抽象类Reader和和Writer的子类。的子类。89.1.2输入输入/输出类输出类InputStream类(字节输入流)常用方法类(字节输入流)常用方法intread()从输入流中读取从输入流中读取1个字节个字节intread(byteb)试图从输入流中读取试图从输入流中读取b.length字节的数据,返回字节的数据,返回实际读取的长度实际读取的长度intread(byteb,intoff,intlen)从输入流中读取从输入流中读取len字节的数据,存放在数组字节的数据,存放在数组b从从off开始的位置,返回实际读取的长度开始的位置,返回实际读取的长度intavailable()获取还有多少字节可读获取还有多少字节可读9longskip(longn)读取位置向前移动读取位置向前移动n个字节,返回实际移动的字节个字节,返回实际移动的字节数数voidclose()关闭输入流关闭输入流voidmark(intreadlimite)在输入流中的当前位置上作标记,标记后若读取超在输入流中的当前位置上作标记,标记后若读取超过过readlimite个字节后,重置流(个字节后,重置流(reset)可能会)可能会失败。失败。voidreset()重新定位到最后调用重新定位到最后调用mark方法时的位置方法时的位置109.1.2输入输入/输出类输出类OutputStream类(字节输出流)常用方法类(字节输出流)常用方法voidwrite(intb)将字节将字节b写入到输出流写入到输出流voidwrite(byteb)将字节数组将字节数组b内容写入到输出流内容写入到输出流voidwrite(byteb,intoff,intlen)将字节数组将字节数组b内容从内容从off位置的位置的len个字节写入到个字节写入到输出流输出流11voidflush()刷新输出流并强制写出所有缓冲的输出字节刷新输出流并强制写出所有缓冲的输出字节voidclose()关闭输出流关闭输出流129.1.2输入输入/输出类输出类Reader类(字符输入流)的常用方法类(字符输入流)的常用方法intread()读取读取1个字符个字符intread(charch)试图读取试图读取ch.length字符的数据,返回实际读取字符的数据,返回实际读取的字符数的字符数intread(charb,intoff,intlen)读取读取len字符的数据,存放在数组字符的数据,存放在数组b从从off开始的开始的位置,返回实际读取的字符数位置,返回实际读取的字符数13longskip(longn)读取位置向前移动读取位置向前移动n个字符,返回实际移动的字符数个字符,返回实际移动的字符数voidmark(intreadlimite)在字符流中的当前位置上作标记,标记后再读取超过在字符流中的当前位置上作标记,标记后再读取超过readlimite个字符后,重置流(个字符后,重置流(reset)可能会失败。)可能会失败。voidreset()重新定位到最后调用重新定位到最后调用mark方法时的位置方法时的位置voidclose()关闭字符流关闭字符流149.1.2输入输入/输出类输出类Writer类(字符输出流)的常用方法类(字符输出流)的常用方法voidwrite(intc)将字符将字符c写入到输出流写入到输出流voidwrite(charch)将字符数组将字符数组ch内容写入到输出流内容写入到输出流voidwrite(charch,intoff,intlen)将字符数组将字符数组ch内容从内容从off位置的位置的len个字符写入个字符写入到输出流到输出流15voidwrite(Strings)将字符串将字符串s中的字符写入到输出流中的字符写入到输出流voidflush()刷新输出流并强制写出所有缓冲的输出字符刷新输出流并强制写出所有缓冲的输出字符voidclose()关闭输出流关闭输出流169.1.3标准输入标准输入/输出输出System类提供了访问标准输入类提供了访问标准输入/输出设备输出设备的功能。的功能。System类有类有3个类变量:个类变量:标准输入标准输入publicstaticfinalInputStreamin标准输出标准输出publicstaticfinalPrintStreamout标准错误输出:标准错误输出:publicstaticfinalPrintStreamerr179.2字节输入字节输入/输出流输出流FileInputStream/FileOutputStreamDataInputStream/DataOutputStreamBufferedInputStream/BufferedOutputStreamPrintStreamInputStream/OutputStream实现类:实现类:1819FileInputStream(1)创建输入流)创建输入流FileInputStream(Stringname)用文件名用文件名name创建流对象。创建流对象。FileInputStream(Filefile)用文件对象用文件对象file创建流对象。创建流对象。9.2.1文件输入文件输入/输出字节流输出字节流FileInputStreamfis=newFileInputStream(“c:/data.txt”);Filemyfile=newFile(“c:/data.txt”);FileInputStreamfis=newFileInputStream(myfile);209.2.1文件输入文件输入/输出字节流输出字节流(2)读取文件信息)读取文件信息intread():从输入流中读取一个字节,返从输入流中读取一个字节,返回字节值回字节值。intread(byteb):从输入流中读取,写从输入流中读取,写入入b。返回实际读取字节数。返回实际读取字节数。intread(byteb,intoff,intlen):从输从输入流中读取入流中读取len个数据,写入个数据,写入b,从索引,从索引off开始。返回实际读取字节数。开始。返回实际读取字节数。21举例举例用用FileInputStream读取文件,并把文件内读取文件,并把文件内容屏幕显示容屏幕显示22import java.io.*;public class FileInputStreamDemopublic static void main(String args)int b;byte buf=new byte32;tryFile f=new File(F:/infodemo.txt);FileInputStream in=new FileInputStream(f);while(b=in.read(buf)!=-1)String s=new String(buf,0,b);System.out.print(s);in.close();catch(IOException e)System.out.println(File read Error);字节流的存储,需字节流的存储,需要字节数组要字节数组byte239.2.1文件输入文件输入/输出字节流输出字节流FileOutputStream创建输出流创建输出流FileOutputStream(Stringname)用文件名用文件名name创建流对象创建流对象FileOutputStream(Filefile)使用文件对象使用文件对象file创建流对象创建流对象FileOutputStream fos=new FileOutputStream(“c:/dataout.dat”);Filef=newFile(“c:/dataout.dat”);FileOutputStreamfos=newFileOutputStream(f);249.2.1文件输入文件输入/输出字节流输出字节流(4)向输出流写信息)向输出流写信息voidwrite(intb):将指定的整型数据将指定的整型数据b的的低字节写入输出流。低字节写入输出流。voidwrite(byteb):把字节数组把字节数组b中的数中的数据写入输出流。据写入输出流。voidwrite(byteb,intoff,intlen):把字把字节数组节数组b中从中从off开始的开始的len个字节写入输出个字节写入输出流。流。259.2.1文件输入文件输入/输出字节流输出字节流(5)关闭流)关闭流显示关闭流对象:显示关闭流对象:close()隐式关闭流对象隐式关闭流对象:Java有有自动垃圾收集系统自动垃圾收集系统,可以自动进行资源的回收。可以自动进行资源的回收。26举例:举例:用用OutputStream向文件中写入键盘输入的向文件中写入键盘输入的数据数据27import java.io.*;public class FileOutputStreamDemopublic static void main(String args)int b;byte buffer=new byte128;trySystem.out.println(“input one line words);b=System.in.read(buffer);FileOutputStream writefile=new FileOutputStream(“F:/demo.txt);writefile.write(buffer);catch(IOException e)System.out.println(Error+e);(“F:/demo.txt”,true)28练习:练习:使用字节流将第一个文件中的内容复制到使用字节流将第一个文件中的内容复制到第二个文件中去(假定两个都是第二个文件中去(假定两个都是txt文件)。文件)。299.2.2过滤流过滤流字节流字节流FileInputStream类和类和FileOutputStream类只提供纯字节或字节数组的输入类只提供纯字节或字节数组的输入/输出。输出。基本数据类型的输入基本数据类型的输入/输出,则要通过过滤输出,则要通过过滤流流FilterInputStream类和类和FileterOutputStream类类中的各种中的各种子类子类。过滤流提供了过滤流提供了同步机制同步机制,即某一时刻只有,即某一时刻只有一个程序段访问输入一个程序段访问输入/输出流。输出流。309.2.2过滤流过滤流DataInputStream,DataOutputStream构造方法:构造方法:DataInputStream(InputStreamin)DataOutputStream(OutputStreamout)必须基于一个输入类或输出类的对象构造!必须基于一个输入类或输出类的对象构造!319.2.2过滤流过滤流DataOutputStream的使用:的使用:FileOutputStream fos=new FileOutputStream(“test.txt);DataOutputStream out_data=new DataOutputStream(fos);out_data.writeInt(100);out_data.writeDouble(123.4322);32DataInputStream的使用:的使用:FileInputStream fis=new FileInputStream(“test.txt);DataInputStream in_data=new DataInputStream(fis);System.out.println(in_data.readInt();System.out.println(in_data.readDouble();33举例:举例:import java.io.*;public class DataOutputInoutStreamDemo public static void main(String args)throws Exception FileInputStream in=new FileInputStream(c:/1.txt);DataInputStream in_data=new DataInputStream(in);FileOutputStream out=new FileOutputStream(c:/1.txt);DataOutputStream out_data=new DataOutputStream(out);out_data.writeInt(100);out_data.writeLong(123456);out_data.writeDouble(111233.4232);out_data.writeBoolean(true);out_data.writeUTF(i am ok);out_data.close();34 System.out.println(in_data.readInt();System.out.println(in_data.readLong();System.out.println(in_data.readDouble();System.out.println(in_data.readBoolean();System.out.println(in_data.readUTF();in_data.close();35缓冲字节流缓冲字节流BufferedInputStream、BufferedOutputStream在基础字节流的基础上建立一个缓冲区,来提在基础字节流的基础上建立一个缓冲区,来提高字节流处理的效率高字节流处理的效率BufferedInputStream(InputStream in)BufferedInputStream(InputStream in,int size)BufferedOutputStream(OutputStream out)BufferedOutputStream(OutputStream out,int size)read()、write()flush()9.2.2过滤流过滤流369.2.2过滤流过滤流PrintStream:将:将java的任何数据类型转换为的任何数据类型转换为字符串类型输出字符串类型输出PrintStream(OutputStreamout)PrintStream(Filefile)PrintStream(StringfileName)print()println()379.3字符输入字符输入/输出流输出流InputStreamReader/OutputStreamWriterFileReader/FileWriterBufferedReader/BufferedWriterPrintWriterReader/Writer实现类:实现类:38399.3.1输入输入/输出字符流输出字符流InputStreamReader、OutputStreamWriter以字节方式表示的流转换为特定平台上的以字节方式表示的流转换为特定平台上的字符表示的流字符表示的流InputStreamReader(InputStream in)InputStreamReader(InputStream in,String enc)OutputStreamWriter(OutputStream out)OutputStreamWriter(OutputStream out,String enc)read()write()close()String getEncoding()409.3字符输入字符输入/输出流输出流文件输入输出字符流:文件输入输出字符流:FileReader和和FileWriter构造方法各有两种。构造方法各有两种。FileReader(Filef)FileReader(Stringfn)FileWriter(Filef)FileWriter(Stringfn)常用方法:常用方法:read();read(charbuffer);write(Stringstr);write(charbuffer);41缓冲字符流缓冲字符流BufferedReader、BufferedWriter在基础字符流的基础上建立一个缓冲区,来提在基础字符流的基础上建立一个缓冲区,来提高字符流处理的效率高字符流处理的效率BufferedReader(Readerin)BufferedWriter(Writerout)read()、write()readLine()、newLine()9.3字符输入字符输入/输出流输出流429.3.4打印输出字符流打印输出字符流PrintWriter:基于字节流或字符流创建,:基于字节流或字符流创建,可直接将可直接将java的基本类型转换成字符串输出。的基本类型转换成字符串输出。构造方法:构造方法:PrintWriter(OutputStreamout)PrintWriter(Writerout)PrintWriter(Filefile)PrintWriter(StringfileName)如:如:PrintWriter pw=new PrintWriter(new FileOutputStream(“test.txt”);或或PrintWriter pw=new PrintWriter(new FileWriter(“text.txt”);43PrintStream与与PrintWriter区别:区别:(1)对于使用)对于使用print系列方法的场合,二者没系列方法的场合,二者没什么区别;什么区别;(2)PrintStream是字节流,有处理是字节流,有处理byte的的方法,方法,write(int)和和write(byte,int,int);PrintWriter是字符流,没有处理是字符流,没有处理byte的的方法。方法。449.4文件处理文件处理在在java.iojava.io包中的包中的File类类提供了平台无关提供了平台无关的方式来描述目录和文件对象的属性。提的方式来描述目录和文件对象的属性。提供了很多的方法用来获取路径、目录和文供了很多的方法用来获取路径、目录和文件的相关信息。件的相关信息。构造方法:构造方法:File(StringFile(String filename)filename)File(StringFile(String parent,Stringparent,String filename)filename)45常用方法:常用方法:booleanboolean mkdirmkdir()()根据此文件对象路径创建目录根据此文件对象路径创建目录String list()String list()获取所表示的目录中的文件和目录的名称所获取所表示的目录中的文件和目录的名称所组成字符串数组组成字符串数组String String getNamegetName()()获取对象表示的文件或目录的名称获取对象表示的文件或目录的名称String String getPathgetPath()()获取文件对象的路径获取文件对象的路径46String String getParentgetParent()()获取文件对象上一级目录名获取文件对象上一级目录名booleanboolean renameTo(FilerenameTo(File newFilenewFile)将文件进行重命名为将文件进行重命名为newFilenewFile指定的名称指定的名称booleanboolean exists()exists()判断文件是否存在判断文件是否存在booleanboolean canReadcanRead()()判断文件是否可读判断文件是否可读47booleanboolean canWritecanWrite()()判断文件是否可写判断文件是否可写booleanboolean delete()delete()删除文件删除文件更多的方法说明请参照更多的方法说明请参照 JDK API JDK API 文档!文档!489.4.2文件顺序访问文件顺序访问 1 1、引入、引入“java.iojava.io”包,包,importjava.io.*;2 2、根据数据源和输入输出的任务创建字节或、根据数据源和输入输出的任务创建字节或字符流对象。字符流对象。3 3、若需要对字节或字符信息组织加工,基于、若需要对字节或字符信息组织加工,基于字节或字符流对象上构造过滤流对象。字节或字符流对象上构造过滤流对象。4 4、用输入输出流对象的成员方法进行读、用输入输出流对象的成员方法进行读/写操写操作。作。5 5、关闭流对象。、关闭流对象。FileInputStream、FileOutputStream、FileReader、FileWriterDataInputStream、DataOutputStreamBufferedReader、BufferedWriterwrite()、read()25要考虑异常处理。要考虑异常处理。499.4.3文件随机访问文件随机访问RandomAccessFile提供了随机访问文件提供了随机访问文件的方法。当对一个文件进行读写操作时,的方法。当对一个文件进行读写操作时,创建一个创建一个RandomAccessFile流即可。它可以流即可。它可以从流中读取文件的内容,也可以写入数据从流中读取文件的内容,也可以写入数据到文件到文件使用下列构造方法创建流:使用下列构造方法创建流:RandomAccessFile(Stringname,Stringmode);RandomAccessFile(Filename,Stringmode);mode的取值为的取值为”r”或或”rw”50常用方法:常用方法:longgetFilePointer()获取当期访问位置获取当期访问位置voidseek(longpos)设置文件访问位置设置文件访问位置longlength()获取文件大小获取文件大小voidsetLength(longnewLength)设置文件长度,若当前长度设置文件长度,若当前长度 newLength,文件被,文件被截断,若截断,若 newLength,则文件被扩展,则文件被扩展51intread()intread(byteb,intoff,intlen)intread(byteb)按字节进行读取按字节进行读取readBoolean()readChar()readDouble()readFloat().按基本类型读取按基本类型读取52voidwrite()voidwrite(byteb,intoff,intlen)voidwrite(byteb)按字节进行按字节进行写文件写文件writeBoolean()writeChar()writeDouble()writeFloat().按基本类型按基本类型进行写入进行写入539.5对象的串行化对象的串行化(Serialization)序列化:序列化:将对象的状态保存下来,在需要时将其对将对象的状态保存下来,在需要时将其对象恢复。这种对象能记录自己状态以便将象恢复。这种对象能记录自己状态以便将来再恢复的能力称为来再恢复的能力称为对象的持续性对象的持续性(Persistence)对象通过写出描述自己状态的数值来记录对象通过写出描述自己状态的数值来记录自己,这个过程叫自己,这个过程叫对象的序列化对象的序列化主要应用:主要应用:一个对象被存放到磁盘上,或者发送到另一个对象被存放到磁盘上,或者发送到另外一台机器并存放到存储器或磁盘上。外一台机器并存放到存储器或磁盘上。54序列化的方法序列化的方法1、定义一个可序列化的对象:实现、定义一个可序列化的对象:实现Serializable接口接口如:如:classBagimplementsSerializableColorcolor;Stringprice;intsize;Stringtype;publicBag(Colorc,Stringp,ints,Stringt)color=c;price=p;size=s;type=t;9.5.2串行化的方法串行化的方法55说明:说明:(1)定义对象时,实现了定义对象时,实现了Serializable接口,接口,即该对象可序列化即该对象可序列化(2)有些对象的数据是不断改变的,如有些对象的数据是不断改变的,如FileInputStream、FileOutputStream、Thread类,因此,不能序列化操作类,因此,不能序列化操作(3)如果串行化对象的某个字段不需要永久保如果串行化对象的某个字段不需要永久保存,则可用存,则可用transient关键字修饰。关键字修饰。9.5.2串行化的方法串行化的方法562、输出数据进行保存、输出数据进行保存读取对象信息:读取对象信息:ObjectInputStream类类readObject()读取对象信息到输出流:读取对象信息到输出流:ObjectOutputStream类类writeObject()9.5.2串行化的方法串行化的方法57将信息写入到文件中将信息写入到文件中try FileOutputStream fileO=new FileOutputStream(“baginfo);ObjectOutputStream OS=new ObjectOutputStream(fileO);OS.writeObject(bag);OS.close();catch(IOException e)System.out.println(e);9.5.2串行化的方法串行化的方法58读取文件中的对象信息读取文件中的对象信息tryFileInputStream fileI=new FileInputStream(info.txt);ObjectInputStream IS=new ObjectInputStream(fileI);bag=(Bag)IS.readObject();IS.close();catch(IOException e)System.out.println(e);catch(ClassNotFoundException e)System.out.println(e);10.9对象的序列化对象的序列化BagSerial.java59举例举例import java.io.*;import java.awt.*;class Bag implements Serializable Color color;String price;int size;String type;public Bag(Color c,String p,int s,String t)color=c;price=p;size=s;type=t;public class BagSerialpublic static void main(String args)Bag bag=new Bag(Color.red,57,18,student bag);60 try FileOutputStream fileO=new FileOutputStream(info.txt);ObjectOutputStream OS=new ObjectOutputStream(fileO);OS.writeObject(bag);OS.close();catch(IOException e)System.out.println(e);try FileInputStream fileI=new FileInputStream(info.txt);ObjectInputStream IS=new ObjectInputStream(fileI);bag=(Bag)IS.readObject();IS.close();catch(IOException e)System.out.println(e);catch(ClassNotFoundException e)System.out.println(e);System.out.println(size:+bag.size);619.6简要了解其它数据流简要了解其它数据流管道流管道流PipedInputStream和和PipedOutputStream用于在不同的线程间直接传送数据。用于在不同的线程间直接传送数据。内存的访问内存的访问ByteArrayInputStream和和ByteArrayOutputStream为提高安全而禁止任何程序直接对内存进行操作。为提高安全而禁止任何程序直接对内存进行操作。顺序流顺序流SequenceInputStream和和SequenceOutputStream62总结总结掌握输入输出的掌握输入输出的基本概念基本概念掌握文件掌握文件字节流字节流的使用。的使用。掌握文件掌握文件字符流字符流的使用。的使用。掌握文件的掌握文件的顺序访问顺序访问的方法。的方法。了解文件的随机访问了解文件的随机访问掌握数据输入流和数据输出流的使用掌握数据输入流和数据输出流的使用掌握对象的串行化掌握对象的串行化

    注意事项

    本文(9 输入输出流.ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开