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

    第10章 和流.ppt

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

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

    第10章 和流.ppt

    第第10章章 文件和流文件和流 学习导读学习导读n输入和输出是一个程序重要的功能,Java的应用程序和Java Applet往往经常要通过输入和输出来读写数据。n本章将介绍如何从一个能发送字节序列的“数据源”获得输入,以及如何将输出发送给能够接收字节序列的一个“目标”。课程结构课程结构nJava流类库简介n基本流n数据流n过滤流n文件流n对象流10.1 Java流类库简介流类库简介n1 流的概念nJava所有的I/O机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。n流是一个很形象的概念,当程序需要读取数据时,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接,则这就是“输入流”,如图所示。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流,这就是“输出流”,这时你就可以想像数据好像在这其中“流”动一样,如图所示。10.1 Java流类库简介流类库简介 输入流输入流 输出流输出流10.1 Java流类库简介流类库简介nJava中的流分为两种:中的流分为两种:n一种是字节流,另一种是字符流一种是字节流,另一种是字符流n分别由四个抽象类来表示(每种流包括输入和分别由四个抽象类来表示(每种流包括输入和输出各两种,所以一共四个):输出各两种,所以一共四个):InputStreamOutputStreamReaderWriter10.1 Java流类库简介流类库简介n2 Java的的I/O库库nJava中的中的字节流字节流是用于处理字节的输入和输出是用于处理字节的输入和输出的,包括读写二进制数据等方面的内容。的,包括读写二进制数据等方面的内容。InputStream OutputStreamn而而Java中的中的字符流字符流则用于处理字符的输入和输则用于处理字符的输入和输出,采用的是出,采用的是Unicode编码,可以实现国际化。编码,可以实现国际化。Reader Writer10.1 Java流类库简介流类库简介n(1)InputStream1)abstract int read()2)int read(byte b)3)int read(byte b,int off,int len)4)long skip(long n)5)int available()()6)void close()()7)void mark(int readlimit)8)void reset()()9)boolean markSupported()10.1 Java流类库简介流类库简介n(2)OutputStream1)abstract void write(int b)2)void write(byte b)3)void write(byte b,int off,int len)4)void close()()5)void flush()()10.1 Java流类库简介流类库简介n(3)Reader Writerpublic abstract int read()throws IOExceptionpublic abstract void write()throws IOException 10.2 基本流基本流n1.键盘输入和格式化输出n它有它有3个内置的标准流对象,它们是:个内置的标准流对象,它们是:1)标准输入流)标准输入流System.io:用于程序的输入,通常用来用于程序的输入,通常用来读取用户从键盘的输入。读取用户从键盘的输入。2)标准输出流)标准输出流System.out:用于程序的输出,通常用用于程序的输出,通常用来在屏幕上显示信息。来在屏幕上显示信息。3)标准出错流)标准出错流System.err:用于显示出错信息。用于显示出错信息。10.2 基本流基本流n基本的键盘输入基本的键盘输入(1)方方法法一一:使使用用System.in对对象象的的方方法法read()来来读读取键盘的输入取键盘的输入 见见例例10。1(2)方方法法二二:可可以以通通过过java.io包包中中提提供供的的流流类类接接收收键键盘的输入盘的输入 见见例例10。2(3)可可以以通通过过控控制制台台类类Console类类来来实实现现从从键键盘盘输输入入;控控制制台台类类Console不不属属于于Java的的标标准准类类库库,它它属属于于corejava包包 见见例例10。310.2 基本流基本流n格式化输出格式化输出1)输输出出方方法法:用用System.out内内置置的的标标准准输输出出对对象象来来输输出到标准设备(一般是显示器)出到标准设备(一般是显示器)见例见例10。32)可可 以以 控控 制制 显显 示示 格格 式式,在在 java.text包包 中中 的的NumberFromat类就可以控制输出的格式类就可以控制输出的格式 见见例例10。53)用户还可以创建自己的格式)用户还可以创建自己的格式 4)用)用Console类格式化输出类格式化输出 10.2 基本流基本流n2.读和写字节读和写字节n(1)InputStream类的抽象方法类的抽象方法 n(2)OutputStream类的抽象方法类的抽象方法n(3)available方法方法n 10.3 数据流数据流n数据流支持所有数据流支持所有Java中的基本类型。中的基本类型。n可以通过分别实现了可以通过分别实现了DataOutput和和DataInput两个接口的两个接口的DataOutputStream和和DataInputStream类中的方法对基本数据进行读类中的方法对基本数据进行读写写n 10.3 数据流数据流nDataInput接口接口 1)boolean readBoolean():():读入一个布尔值。读入一个布尔值。2)byte readByte():():读入一个读入一个8位字节。位字节。3)char readChar():():读入一个读入一个16位的字符。位的字符。4)double readDouble():():读入一个读入一个64位位double字符。字符。5)float readFloat():():读入一个读入一个32位位float字符。字符。6)void readFully(byte b):读读字字节节,直直到到读读所所有有字字节才封锁,参数节才封锁,参数b为读入数据的缓冲区。为读入数据的缓冲区。10.3 数据流数据流7)void readFully(byte b,int off,int len):读读字字节节,直直到到读读所所有有字字节节才才封封锁锁,参参数数b为为读读入入数数据据的的缓缓冲冲区区,off为数据的起始偏移量,为数据的起始偏移量,len为写的字节数。为写的字节数。8)int readInt():():读一个读一个32位整数。位整数。9)String readLine():读读入入一一行行以以一一个个n,r,rn或或EOF结结束束的的字字符符串串,返返回回一一个个字字符符串串,该该字字符符串串包包含含转换为单位码字符的行中的所有字节。转换为单位码字符的行中的所有字节。10)long readLong():():读入一个读入一个64位的长整数。位的长整数。11)short readShort():():读入一个读入一个16位的短整数。位的短整数。12)String readUTF():读读入入一一个个UTF格格式式的的字字符符串。串。13)int skipByte(int n):跳跳过过若若干干个个字字节节,直直到到跳跳过所有的字节才封锁,过所有的字节才封锁,n为跳过的字节。为跳过的字节。10.3 数据流数据流n2 Java.DataOutput接口接口1)void writeBoolean(boolean b):):写一个布尔值。写一个布尔值。2)void writeByte(byte b):):写一个写一个8位字节。位字节。3)void writeChar(char c):):写一个写一个16位字符。位字符。4)void writeChars(String s):写写入入字字符符串串的的所所有有字符。字符。5)void writeFloat(float f):):写写32位位float数。数。6)void writeDouble(double d):):写写64位位double数。数。7)void writeInt(int I):):写写32位整数。位整数。8)void writeLong(long l):):写写64位长整数。位长整数。9)void writeShort(short s):):写写16位短整数。位短整数。10)void writeUTF(String s):写一个写一个UTFUTF格式的字符格式的字符串串 10.4 java的输入输出流简介的输入输出流简介一、字节流:(一、字节流:(InputStream,OutStream)1、FileInputStream(文件输入流):文件输入流):源自日常文件的数源自日常文件的数据输入流,它可以创建一个能从文件中读取字节的据输入流,它可以创建一个能从文件中读取字节的InputStream类。它的构造函数为:类。它的构造函数为:FileInputStream(String filepath)throws FileNotFoundException;FileInputStream(File fileObj)throws FileNotFoundException;其中:其中:filepath是文件的全称路径,是文件的全称路径,fileObj是描述该文件是描述该文件的的File对象。对象。2、ByteArrayInputStream(字节数组输入流)字节数组输入流)n把字节数组当成源的输入流。把字节数组当成源的输入流。nByteArrayInputStream 包含一个内部缓冲区,包含一个内部缓冲区,该缓冲区存储从流中读取的字节。内部计数器该缓冲区存储从流中读取的字节。内部计数器跟踪跟踪 read 方法要提供的下一个字节。方法要提供的下一个字节。构造函数:构造函数:ByteArrayInputStream(byte array)ByteArrayInputStream(byte array,int start,int numBytes)例:例:ByteArrayInputStreamReset.java10.4 java的输入输出流简介的输入输出流简介3、FileOutputStream(文件输出流)文件输出流)创建一个可以向文件写入字节的类创建一个可以向文件写入字节的类OutputStream,可以引可以引发发IOException或或SecurityException异常。异常。FileOutputStrem的创建不依赖于文件是否存在。在创的创建不依赖于文件是否存在。在创建对象时建对象时FileOutputStream在打开输出文件之前创建在打开输出文件之前创建它。此时如果打开一个只读文件,将会引发一个它。此时如果打开一个只读文件,将会引发一个IOException异常。常用构造函数:异常。常用构造函数:FileOutputStream(String filePath)FileOutputStream(String filePath,boolean append)FileOutputStream(File fileObj)例:例:FileOutputStreamDemo.java10.4 java的输入输出流简介的输入输出流简介4、ByteArrayOutputStream(字节数组输出流)字节数组输出流)是一个把字节数组当作输出流的实现,构造函数为:是一个把字节数组当作输出流的实现,构造函数为:ByteArrayOutputStream():生成一个生成一个32位字节的缓冲器。位字节的缓冲器。ByteArrayOutputStream(int numBytes):生成一个跟指:生成一个跟指定定numBytes相同位数的缓冲器。相同位数的缓冲器。5、BufferedInputStream(缓冲输入流)和缓冲输入流)和BufferedOutputStream(缓冲输出流)(缓冲输出流)BufferedInputStream在在InputStream中加一个读取缓冲,中加一个读取缓冲,能显著提高读取性能。能显著提高读取性能。10.4 java的输入输出流简介的输入输出流简介构造函数:构造函数:BufferedInputStream(InputStream inputStream):生成一个默认长度生成一个默认长度的缓冲流。的缓冲流。BufferedInputStream(InputStream inputStream,int bufSize):缓冲器:缓冲器的大小是由的大小是由bufSize传入的。传入的。BufferedOutputStream:把把write()等方法写入的数据暂时存放在缓冲等方法写入的数据暂时存放在缓冲区中,当缓冲区满或者用户调用区中,当缓冲区满或者用户调用flush()强制写入数据时才把数据强制写入数据时才把数据写入输入输出设备。这样有效地减少读写设备的次数,提高系统写入输入输出设备。这样有效地减少读写设备的次数,提高系统的性能。的性能。构造函数:构造函数:BufferedOutputStream(OutputStream outputStream)BufferedOutputStream(OutputStream outputStream,int bufSize)例:例:DownLoad.java10.4 java的输入输出流简介的输入输出流简介6、SequenceInputStream(顺序输入流)顺序输入流)可以连接多个可以连接多个InputStream流。流。7、PushbackInputStream(返回输入流)返回输入流)用于输入流允许字节被读取然后返回到流。用于输入流允许字节被读取然后返回到流。10.4 java的输入输出流简介的输入输出流简介二、字符流:二、字符流:字节流提供了处理任何类型输入字节流提供了处理任何类型输入/输出操作的足够的功能,输出操作的足够的功能,但它们不能直接操作但它们不能直接操作Unicode字符,字符流面向字符,字符,字符流面向字符,读写的单位是两个字节。字符流以读写的单位是两个字节。字符流以Reader和和Writer为为顶层。顶层。常见的字符流:常见的字符流:1、FileReader和和FileWriter:FileReader创建一个可以读取文件内容的创建一个可以读取文件内容的Reader类:类:构造函数:构造函数:FileReader(String filePath)FileReader(FilefileObj)10.4 java的输入输出流简介的输入输出流简介FileWriter创建一个可以写文件的创建一个可以写文件的Writer类:类:FileWriter(String filePath)FileWriter(String filePath,boolean append)FileWriter(File fileObj)例:例:txtCopy.java10.4 java的输入输出流简介的输入输出流简介2、CharArrayReader和和CharArrayWriter(1)CharArrayReader是一个把字符数组作为源的输入流是一个把字符数组作为源的输入流的实现,构造函数:的实现,构造函数:CharArrayReader(char array);CharArrayReader(char array,int start,int numChars);(2)CharArrayWriter是一个把字符数组作为目标的输出是一个把字符数组作为目标的输出流的实现,构造函数:流的实现,构造函数:CharArrayWriter():创建一个默认长度的缓冲器。:创建一个默认长度的缓冲器。CharArrayWriter(int numChars):缓冲器长度由:缓冲器长度由numChars指定。指定。例:例:CharArrayReaderDemo.java10.4 java的输入输出流简介的输入输出流简介3、BufferedReader和和BufferedWriter4、PushbackReader:允许一个字符或多个字符:允许一个字符或多个字符被送回输入流。被送回输入流。10.4 java的输入输出流简介的输入输出流简介10.5过滤流过滤流n对于某些流来说(比如对于某些流来说(比如FileInputStream),),它它可从文件或一些更特殊的地方读入字节数据。可从文件或一些更特殊的地方读入字节数据。n对另一些流来说(比如对另一些流来说(比如DataInputStream以及以及PrintWriter),),它们则可将字节它们则可将字节“组装组装”成更有成更有用的数据类型。用的数据类型。nJava程序源必须综合运用这两种流,将其合并程序源必须综合运用这两种流,将其合并成所谓的成所谓的“过滤流过滤流”,n方法是将一个现成的流传递给另一个流的构造方法是将一个现成的流传递给另一个流的构造函数。函数。10.6文件流文件流n在在Java中中,文文件件流流是是用用得得比比较较广广泛泛的的一一种种流流形形式式,它它以以磁盘文件为输入或输出的原始数据和目的。磁盘文件为输入或输出的原始数据和目的。n在在Java中中,把把文文件件看看成成是是一一个个字字符符(字字节节)的的序序列列。根根据据数数据据的的组组织织形形式式,可可将将文文件件分分为为文文本本文文件件和和二二进进制制文文件。件。n在在文文本本文文件件中中,每每一一个个字字节节存存放放一一个个ASCII码码,代代表表一一个字符。个字符。n二二进进制制文文件件是是把把内内存存中中的的数数据据按按其其在在内内存存中中的的存存储储形形式式原样输出到磁盘文件上存放。原样输出到磁盘文件上存放。n文文件件流流也也就就根根据据所所针针对对的的文文件件类类型型的的不不同同而而分分为为文文本本流流和二进制流。和二进制流。n在在Java的的I/O库库中中,抽抽象象类类Reader和和Writer只只能能用用来来对对文文本本文文件件进进行行操操作作,而而 抽抽象象类类InputStream和和OutputStream 可可以以对对文文本本文文件件或或二进制文件进行操作。二进制文件进行操作。10.5 文件流文件流n1 二进制文件的读写二进制文件的读写 n(1)二进制文件的写二进制文件的写 二进制文件的写通常要用到二进制文件的写通常要用到DataOutputStream类类 格式如下:格式如下:FileOutputStream out=new FileOutputStream(“路路径径和和文文件名件名”);DataOutputStream dos=new DataOutputStream(“out”);或或DataOutputStream dos=new DataOutputStream(new FielOutputStream(“路径和文件名路径和文件名”));然后可以用然后可以用DataOutputStream实现的方法向文件写入数据实现的方法向文件写入数据 dos.writeDouble();dos.writeInt()见见例例10.610.5 文件流文件流n(2)二进制文件的读二进制文件的读 二进制形式文件的读,通常要用到二进制形式文件的读,通常要用到DataInputStream类类 格式如下:格式如下:FileInputStream in=new FileInputStream(“路路径径和和文文件件名名“);DataInputStream dis=new DataInputStream(“in”););当然也可以写成:当然也可以写成:DataInputStream dis=new DataInputStream(new FileInputStream(“路径和文件名路径和文件名“)););然后用数据流的方法读入文件中的数据,如:然后用数据流的方法读入文件中的数据,如:double d=dis.readDouble();int i=dis.readInt();见见例例10。710.5 文件流文件流n2 文本文件的读写文本文件的读写在在Java中,采用的是中,采用的是Unicode字符。也就是说字符。也就是说“1234”这个字符这个字符串的字符编码是串的字符编码是00 31 00 32 00 33 00 34JavaJava提供了一个过滤流,可以用来弥补提供了一个过滤流,可以用来弥补UnicodeUnicode编码和本机操作编码和本机操作系统采用的字符编码间不同造成的问题系统采用的字符编码间不同造成的问题如如 FileInputStream fis=new FileInputStream(“myfile.txt”);InputStreamReaderInputStreamReader isrisr=new=new InputStreamReaderInputStreamReader(fis(fis););或或nputStreamReader isr=new InputStreamReader(new FileInputStream(“myfile.txt”);或或FileReaderFileReader frfr=new=new FileReader(“myfile.txtFileReader(“myfile.txt”)”)10.5 文件流文件流n(1)写文本文件写文本文件1)FileOutputStream 方法是:方法是:FileOutputStream out out=new FileOutputStream(myfile.txt);PrintStream p=new PrintStream(out);用用 p.println()来写入数据,然后用来写入数据,然后用 p.close()关闭输入关闭输入 见见例例10。92)用用 FileWriter 方法是:方法是:FileWriter fw=new FileWriter(mydata.txt);PrintWriter out=new PrintWriter(fw);用用out.print 或或 out.println往文件中写入数据,写完后要往文件中写入数据,写完后要用用out.close()关闭输出,关闭输出,用用fw.close()关闭文件关闭文件 见见例例10。1010.5 文件流文件流n2读文本文件读文本文件1)用用FileInputStream 方法是:方法是:FileInputStream fstream=new FileInputStream(args0);DataInputStream in=new DataInputStream(fstream);用用 in.readLine()来得到数据,用来得到数据,用 in.close()关闭输入流关闭输入流见见例例10。112)用)用FileReader 来读取文件的常用方法是:来读取文件的常用方法是:FileReader fr=new FileReader(mydata.txt);BufferedReader br=new BufferedReader(fr);用用br.readLing()来来读读出出数数据据,然然后后用用br.close()关关闭闭缓缓存,用存,用fr.close()关闭文件关闭文件 见见例例10。12 例例10。1310.6 对象流对象流n要要以以对对象象数数据据为为单单位位进进行行读读写写,如如果果要要想想保保存存对对 象象 数数 据据,首首 先先 需需 要要 打打 开开 一一 个个ObjectOutputStream对象,格式如下:对象,格式如下:ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(“employee.dat”);n现现 在在 要要 想想 保保 存存 一一 个个 对对 象象,只只 需需 使使 用用ObjectOutputStream提提供供的的writeObject方方法法就就可可以了,如下所示:以了,如下所示:Employee harry=new Employee(“Harry Hacker”,35000,new Date(1989,10,1)out.writeObject(harry);10.6 对象流对象流n要要 想想 读读 回回 对对 象象,首首 先先 要要 打打 开开 一一 个个ObjectInputStream对象:对象:ObjectInputStream in=new ObjectInputStream(new FileInputStream(“employee.dat”);n然然后后,按按对对象象当当初初写写入入的的顺顺序序,用用readObject方法取得对象:方法取得对象:Employee e1=(Employee)in.readObject();n见见例例10。14本章小结本章小结n在这一章中我们学习了什么是在这一章中我们学习了什么是Java中的流中的流 n基本流基本流n数据流数据流n过滤流过滤流n文件流文件流n对象流对象流

    注意事项

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

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




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

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

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

    收起
    展开