欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    输入输出流Java程序设计及应用.ppt

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

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

    输入输出流Java程序设计及应用.ppt

    2023/11/17,第7章 输入输出流,1,第7章 输入输出流,7.1 流概述7.2 基本输入输出流7.3 标准输入输出7.4 文件处理7.5 本章小结 输入输出流是Java中输入输出功能的基础,是最基本的操作,许多程序需要读写数据都离不开I/O方法。本章主要讲述了流、输入输出流、InputStream类、OutputStream类、Reader类和Writer类,同时介绍了标准输入和输出和文件处理。,2023/11/17,第7章 输入输出流,2,7.1 流概述,流一般分为输入流(InputStream)和输出流(OutputStream)两类。输入流将外部设备数据引入到计算机中,例如从网络中读取信息,从扫描仪中读取图像信息等;输出流将数据引导到外部设备(屏幕或文件),例如向网络中发布信息,在屏幕上显示图像和文件内容等。但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数入流,而屏幕则只是一个输出流。因此,可以将“流”看作数据从一种设备流向另一种设备的过程。它的最大特点是数据的获取和发送均按数据序列顺序进行:每一个数据都必须等待排在它前面的数据读入或送出之后才能被读写,而不能随意选择输入输出的位置。磁带机是实现流式输入输出的较为典型的设备。输入流(Input Stream)即数据从外部世界流向计算机。输出流(Output Stream)即是数据从计算机流向外部世界。,2023/11/17,第7章 输入输出流,3,7.1 流概述,基本输入输出流基本的输入输出类是最简单的类,它用来处理普通的流。其它的派生类是针对某些特定种类的输入或输出。这些类都包含在java.io包中。图7.1 输入输出流的操作,2023/11/17,第7章 输入输出流,4,7.1 流概述,流的分类,2023/11/17,第7章 输入输出流,5,7.1 流概述,字节流从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。InputStream、OutputStream FileInputStream、FileOutputStream PipedInputStream、PipedOutputStream ByteArrayInputStream、ByteArrayOutputStream FilterInputStream、FilterOutputStream DataInputStream、DataOutputStream BufferedInputStream、BufferedOutputStream字符流从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。Reader、Writer InputStreamReader、OutputStreamWriter FileReader、FileWriter CharArrayReader、CharArrayWriter PipedReader、PipedWriter FilterReader、FilterWriter BufferedReader、BufferedWriter StringReader、StringWriter,2023/11/17,第7章 输入输出流,6,7.1 流概述,Java.io这个软件包包含的两个抽象类,InputStream和OutputStream。所有其它字符数据流的输入/输出类都要扩展这两个基类。java.io软件包提供了一些类和接口,它们在由InputStream和OuputStream类提供的读写操作的顶端定义了一些有用的抽象。例如,ObjectInputStream类提供了让你把输入/输出流中的数据当成对象来读取的方法,而ObjectOutputStream类提供了让你能够把Java对象写入数据流中的方法。这两个类均为抽象类,也就是说它们不能被实例化,必须子类化之后才能够实现一定的功能。InputStream超类提供字符输入流的编程接口和具体实现。OuputStream定义写字节或字节型数组的方法。与输入流InputStream类似,一个输出流在创建时就自动打开,也可以用close()方法显示关闭一个输出流,或者在对象不再被引用,这个OuputStream要成为收集的垃圾时隐式地关闭。java.io包包含若干个实现具体输入或输出的InputStream和OuputStream的子类。例如:FileInputStream和FileOutStream就是在文件系统上进行操作的输入输出流。图7.3和7.4分别表示java.io包中的字节输入流和字节输出流类层次。,2023/11/17,第7章 输入输出流,7,7.1 流概述,java.io包中字节输入流的类层次,2023/11/17,第7章 输入输出流,8,7.1 流概述,java.io包中字节输出流的类层次,2023/11/17,第7章 输入输出流,9,7.1 流概述,包中字符输入流的类层次,2023/11/17,第7章 输入输出流,10,7.1 流概述,java.io包中字符输出流的类层次,2023/11/17,第7章 输入输出流,11,7.2 基本输入输出流,InputStream类InputStream类是以字节为单位的输入流。数据来源可以是键盘,也可以是诸如Internet这样的网络环境。OutputStream类OutputStream位于OutputStream类层次的最顶层,它是一个抽象类,OutputStream是与InputStream相对应的输出流类,它具有所有输出流的基本功能。,2023/11/17,第7章 输入输出流,12,7.2.1 InputStream类,InputStream类是以字节为单位的输入流。数据来源可以是键盘,也可以是诸如Internet这样的网络环境。这个类可以作为许多输入类的基类。InputStream类是一个抽象类,因此不能建立其实例类,相反用户必须使用其子类。注意,大多数输入方法都抛出了IOException例外。因此,如果程序中调用拉这些输入方法,就必须捕获和处理IOException例外。类InputStream处于InputStream类层次的最顶层,2023/11/17,第7章 输入输出流,13,7.2.1 InputStream类,read方法 read方法用于从指定的输入流读取以字节为单位的数据,第一次从流的开始位置开始读取,以后每次从上次的结束部位开始读取,即自动实现了位移。read方法有以下三种形态public int read(byte buff)throws IOException该方法以一字节型数组作为参数,可用于一次读取多个字节,读入字节直接放入数组buff中,并返回读取的字节数。使用该方法必须保证数组有足够的大小来保存所要读入的数据,否则Java就会抛出一个IOException。(例7-1)public abstract int read()throws IOException 即不带参数,该方法每次一个字节从指定的输入流中读取数据。返回值也是int类型,但它并不代表读取的字节数,而是从流中读取的数据的本身,因数据本身是byte类型的,所以一般要强制进行转化;如果没有数据返回的值是-1。在Java中,不能直接把一个整数转换为字符,因为Java的整数为32位,而字符则是为16位。还须注意,该方法一般是通过子类来实现的,所以通常通过System.io.read()来调用。通过以下例题来说明该方法的使用。(例7-2)public int read(byte buff,int start,int len)从指定流读取数据,从start开始,填充len个字节到buff中,返回值为实际的填充数,如果返回值len,一般表示已将指定流中的数据读完。这个方法还可以用于防止数组越界,其用法是:把start设置为0,len设成数组长度。这样,既可填充整个数组,又能保证不会越界。,2023/11/17,第7章 输入输出流,14,7.2.1 InputStream类,available方法格式:public int available()throws IOException功能:返回当前流中可用字节数。available方法用于计算指定流中当前有多少字节,如果指定的流是文件流,那么就返回文件的大小。Available返回的值是int类型。有的输入流可能没有能力返回字节数,如果对这些输入流使用avaiable方法,返回值为0。close方法格式:public viod close()throws IOException功能:关闭当前流对象 对于打开的stream,Java可以自动回收,但是Java自动回收需要时间,所以最好自己调用close方法来关闭stream,这样方便下一次重新指定的流。所以,I/O流在使用完后一定不要忘记关闭输入流,使用close()方法执行关闭操作。,2023/11/17,第7章 输入输出流,15,7.2.1 InputStream类,skip方法格式:public long skip(long n)throws IOException功能:跳过指定的字节数。skip方法类似于C语言中的lseek,都是用于定位的。Skip方法定义:long skip(long n),该方法使指定流中的当前位置移动n个字节,n的值可以是负值用于向前移,skip方法返回值为实际移动的字节数,由于种种原因,如已到流尾或者其它原因返回的值往往小于n。对于读取文件来说,小于n的原因最大的原因是读到了文件尾。InputStream类的几个常用方法还有:public Synchronized void mark(int readlimit):在流中标记一个位置。public Synchronized void reset()throws IOException:返回流中放标记的位置。public Boolean markSupport():返回一个表示流是否支持标记和复位操作的布尔值。,2023/11/17,第7章 输入输出流,16,7.2.1 InputStream类,使用InputStream的注意点当程序中调用InputStream进行请求,所调用的方法就处在等待状态,这种状态就是“堵塞”。请分析下面一段程序:Try int.byt=System.in.read();catch(IOException e)System.out.println(e.toString();当程序运行到System.in.read()的时候就等待用户输入,直到用户输入一个回车键为止。InputStream类操作的是字节数据,不是字符。ASCII字符和字节数据对应8位数据,Java的字符为16位数据,Unicode字符集对应16位字节数据,Java的整数为32位。这样,利用InputStream类来接收键盘字符将收不到字符的高位信息。流是通过-1来标记结束的。因此,必须用整数作为返回的输入值才可以捕捉到流的结束。否则,如果使用的是相当于无符号整数的字符来保存,则无法确认流何时结束。从字节输入流InputStream类的层次结构图可以看出,InputStream是所有基于字节的输入流类的超类。由于它本身是抽象类,不能用来直接创建对象,它提供的方法通常是在其子类的对象中被使用的。,2023/11/17,第7章 输入输出流,17,7.2.1 InputStream类,FileInputStream FileInputStream是从InputStream中继承下来的,称为文件字节输入流,是将文件作为源端设备和目的端设备进行字节处理的I/O流,也就是说,文件字节输入流读取对象是文件。该类的所有方法都是从InputStream类继承来的。为了创建FileInputStream类的对象,可以使用构造方法:FileInputStream(string name)和FileInputStream(File file)。格式如下:public FileInputStream(String name)throws FileNotFoundExceptionpublic FileInputStream(File file)throws FileNotFoundException 读取方法:public int read()throws IOExceptionpublic int read(byte b)throws IOExceptionpublic int read(byte b,int start,int len)throws IOException该组方法用于从文件中读取数据。其中,b是保存存取到的数据的字节数组,start是输入流的字节偏移量,len是将要读取的字节长度。可以一次一个字节地读取,也可以按字节数组的容量或指定字节长度成批地读取。,2023/11/17,第7章 输入输出流,18,7.2.1 InputStream类,FileInputStream流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取文件中其余的内容,直到文件的末尾或流被关闭。关闭方法格式如下:(例7_3)public void close()throws IOExceptionPipedInputStream管道流用于程序(或线程)之间的通讯。InputStream的派生类PipedInputStream一般与PipedOutputStream一起用构成线程之间双向的通信管道。一个PipedInputStream必须连接一个PipedOutputStream,而且一个PipedOutputStream也必须连接一个PipedInputStream。PipedInputStream用于实现管道的输入端,而PipedOutputStream用于实现管道的输出端。,2023/11/17,第7章 输入输出流,19,7.2.1 InputStream类,PipedInputStream类用于从管道中读取数据,这个管道数据由PipedOutputStream类写入。因此,在使用类PipedInputStream之前,必须将它连接到类PipedOutputStream。可以在实例化PipedInputStream类时建立这个连接,或者调用Connect()方法建立连接。PipedInputStream中包括用于读数据的底层方法,同时也提供了读数据的高层接口。PipedInputStream类创建的对象称为一个输入管道。在里先不介绍PipedInputStream的具体用法。FilterInputStreamFilterInputStream也是从InputStream中继承下来,不过FilterInputStream类基本上不能直接使用,一般上使用该类的派生类,如BufferedInputStream、DataInputStream、LineNumberInputStream、PushbackInputStream。该类的最大特点是,在定义时可以嵌套:InputStream s=getAnInputStreamFromSomewhere();FilterInputStream s1=new FilterInputStream(s);FilterInputStream s2=new FilterInputStream(s1);FilterInputStream s3=new FilterInputStream(s2);所以该类的所有派生类都具有这个特性。各个派生类简单介绍如下:,2023/11/17,第7章 输入输出流,20,7.2.1 InputStream类,BufferedInputStream它通过重写其超类FilterInputStream的方法,在其中提供了内部缓冲操作,内部缓冲允许大量待读取的数据存入缓冲区内。即使重写了FilterInputStream的方法,其过滤机器仍保留着。使用内部缓冲,使得实际数据可以按块读取,如按照磁盘的块大小进行读取。其后的读请求由内部缓冲区来响应,这样访问速度比磁盘的访问速度快。使用下面的构造方法中的任何一个都可以建立BufferedInputStream对象:public BufferedInputStream(InputStream in);public BufferedInputStream(InputStream in,int size);第一种形式使用一个缺省的缓冲区大小,而第二种形式用构造方法的第二个参数指定缓冲区大小。DataInputStream有许多应用程序需要将处理的数据作为Java的一种基本类型(如布尔型,字节,整数和浮点数)。这就要用到类DataInputStream和DataOutStream.。使用这些类,可以读或写Java基本数据类型组成的流。DataInputStream扩展了FilterInputStream的类,并实现了DataInput接口:public class DataInputStream extends FilterInputStream Implements DataInput,2023/11/17,第7章 输入输出流,21,7.2.1 InputStream类,LineNumberInputStreamLineNumberInputStream类用于记录输入流中的行号。行号在标记/重 置操作中记录。可以用getLineNumber()获得当前的行号,而setLineNumber()可以用于设置当前行的行号。改变某一行的行号后,其后的行就从这个新的行号开始重新编号。类LineNumberInputStream是FilterInputStream类的子类。PushbackInputStreamPushbackInputStream类利用unread()方法,可以将一个字节送回输入流 中。送回InputStream中的这个字符可以在下一次调用read()时被读出。PushbackInputStream类可用于实现“先行”功能,它返回下一个要读出的字符。编写用于输入分析的程序时,这个功能很有用。类PushbackInputStream是FilterInputStream类的子类。,2023/11/17,第7章 输入输出流,22,7.2.1 InputStream类,SequenceInputStreamSequenceInputStream把多个输入流顺序接到一个输入流中,即将不同的InputStream按先后顺序串在一起。使用这个类可以将两个独立的流合并为一个逻辑流,如将两个InputStream串起来:InputStream s1=new FileInputStream(theFirstPart);InputStream s2=new FileInputStream(theRest);InputStream s=new SequenceInputStream(s1,s2);以上只能实现两个输入流的串接,要实现两个以上输入流串接,需要用到Vector类,如下所示:Vector v=new Vector(3);Enumeration e;v.addElement(s1);v.addElement(s2);v.addElement(s2);e=v.elements();InputStream s=new SequenceInputStream(e);合并后的流中的数据按照在各个流中指定的顺序读出。第一个流结束时,使用无缝连接的方式开始从第二个流中读数据。StringBufferInputStream允许程序将一个StringBuffer用作输入流,并使用ByteArrayInputStream从中读取数据。String buffer=Now is the time for all good men to come.;InputStream s=new StringBufferInputStream(buffer);,2023/11/17,第7章 输入输出流,23,7.2.1 InputStream类,ObjectInputStreamObjectInputStream与ObjectOutputStream相对应,ObjectInputStream类和ObjectOutputStream类分别是InputStream类和OutputStream类的子类。ObjectInputStream类创建的对象被称为对象输入流。对象输入流使用readObject()从源中读取一个对象到程序中。ObjectInputStream将对象的值及类的定义等从指定的输入流读入,以便重新对象化:FileInputStream in=new FileInputStream(tmp);ObjectInputStream s=new ObjectInputStream(in);String today=(String)s.readObject();Date date=(Date)s.readObject();ObjectOutputStream和ObjectInputStream就可以实现对象的持久化,即要先将对象序列化保存到介质中,在必要的时候重新恢复这些对象。,2023/11/17,第7章 输入输出流,24,7.2.2 OutputStream类,OutputStream位于OutputStream类层次的最顶层,它是一个抽象类,OutputStream是与InputStream相对应的输出流类,它具有所有输出流的基本功能。下面列出输出流类对应的方法。writewrite方法与InputStream的read方法相对应,它有三个形态:public viod write(byte buff)throws IOException:向流中写入一个字节数组,即将指定buff数组中的数据输出到指定Stream;public void write(byte buff,int off,int len)throws IOException:将指定buff数组中的数据从第二个参数开始,输出第三个参数指定的长度到指定的Stream;public abstract void wirte(int buff)throws IOException;将一个int值输出到指定的Stream;flush格式:public void flush()throws IOException 功能:清空流并强制缓冲区中所有数据写入到流中。,2023/11/17,第7章 输入输出流,25,7.2.2 OutputStream类,Close格式:public void close()throws IOException 功能:Close用于关闭指定的输出流。使用过程中要注意,OutputStream是抽象类,不能直接建立它的实例,但可以使用如下语句建立输出流对象:OutputStream os=new FileOutStream(“test.dat”);从字节输出流OutputStream类的层次结构图可以看出,OutputStream是所有基于字节的输出流类的超类。由于它本身是抽象类,不能用来直接创建对象,它提供的方法通常是在其子类的对象中被使用的。以下我们具体介绍一下OutputStream的子类的用法,2023/11/17,第7章 输入输出流,26,7.2.2 OutputStream类,FileOutputStream FileOutputStream与FileInputStream相对应,它提供了基本的文件写入能力,称为文件字节输出流。文件字节输出流按字节将数据写入到文件中。为了创建FileOutputStream类的对象,可以使用构造方法:FileOutputStream(string name)和FileOutputStream(File file)。格式如下:public FileOutputStream(String name)throws FileNotFoundException public FileOutputStream(File file)throws FileNotFoundException 参数是可以用字符串表示的文件名,也可以是创建时与指定文件关联的文件对象出现异常时将抛出FileNotFoundException异常。构造方法参数指定的文件为输出流的目的地,输出流通过使用write()方法把数据写入输出流到达目的地。write方法的格式如下:public viod write(int b)throws IOExceptionpublic viod write(byte b)throws IOExceptionpublic viod write(byte b,int start,int len)throws IOException该组方法用于向指定文件中写入数据。其中,整型变量b是将要写入的字节的整数值,字节数组b是将要写入的字节数组,start是输出流的字节偏移量,len是将要写入的字节长度。可以一次一个字节地写入,也可以按字节数组的容量或指定字节长度成批地写入。FileOutputStream流顺序地写文件,只要不关闭流,每次调用write()方法就顺序地向文件写入内容,直到流被关闭。如果输出流要写入数据的文件已经存在,该文件中的数据内容就会被刷新;如果要写入数据的文件不存在,该文件就会被建立。(例7-4),2023/11/17,第7章 输入输出流,27,7.2.2 OutputStream类,PipedOutputStreamPipedInputStream类创建的对象称为一个输入管道,PipedOutputStream类创建的对象称为一个输出管道。输出管道与输入管道连接就形成了一个传输数据的通道。使用这样的管道,用户可以在不同线程之间实现数据共享。也就是说,一个线程中的管道输入流应当指向另一个线程中的管道输出流;而一个线程中的管道输出流应当指向另一个线程中的管道输入流,然后管道输入流就可以读取写入管道输出流的数据了。相应地PipedOutputStream与PipedInputSteam相互配合实现两个线程之间的通信,它们的定义如下:PipedInputStream sIn=PipedInputStream();PipedOutputStream sOut=PipedOutputStream(sIn);(例7-5)说明:类ReadThread非常巧妙,它并没有指定输入输出流的具体类型在MyPipe类中new ReadThread(reader,System.in,readOut)语句使得从标准输入设备中接收数据,而从readOut输出,而readOut是PipedOutputSteam,所以它可以被另一线程接收;new ReadThread(writer,writeIn,System.out),从writeIn接收数据,writeIn是readOut是成对的双向管道,它接收从readOut发送过来的数据。再从标准设备中输出。,2023/11/17,第7章 输入输出流,28,7.2.2 OutputStream类,FilterOutputStreamFilterOutputStream与FilterInputStream相对应,使用方法也相类似。FilterOutputStream用于建立一个输出过滤器。FilterOutputStream类将另一个输出流作为其类定义的一部分存储。所有FilterOutputStream的方法调用都传递给它的内部输入流。当构造FilterOutputStream实例时,必须传给它一个将在内部存储的输入流的实例。FilterOutputStream类本身并不做任何处理,只是将方法调用传递给它的内部输入流。如果希望它执行有用的处理,必须建立它的子类,并在其中提供必要的操作。FilterOutputStream的标准子类是BufferedOutputStream、DataOutStream、PrintStream。以下将分别介绍这几个子类的使用。BufferedOutputStream BufferedOutputStream从FilterOutputStream中继承下来,它与BufferedInputStream相对应,作用也相类似,它主要为输出流做缓冲,OutputStream s=new BufferedOutputStream(new FileOutputStream(foo);由于BufferedOutputStream是缓冲数据的,所以必要时,需要使用flush方法强制将缓冲中的数据真正写入输出流中。,2023/11/17,第7章 输入输出流,29,7.2.2 OutputStream类,DataOutputStreamDataOutputStream与DataInputStream相对应,它执行输入流中基本的Java数据类型的数据输出。在继承OutputStream的同时,实现了DataOutput接口,实现DataOutput接口格式如下:ublic class DataOutputStream extends FilterOutputStream implements DataOutput 因此它具有DataOutput接中所规定的方法,这些方法与DataInput所规定的方法相反。它还具有size方法,该方法返回向输出流写入的字节数。以下是实现复制功能的例子:try while(true)aDO.writeByte(aDI.readByte();finally aDI.close();aDO.close();使用下面的低层方法可以建立DataOutputStream的一个实例:public DataOutputStream(OutputStream out);,2023/11/17,第7章 输入输出流,30,7.2.2 OutputStream类,PrintStream为了在标准输出流中提供复杂的输出,提供PrintStream类派生出输出流对象。PrintStream是一个格式化的输出流,是从FilterOutputStream继承下来的。PrintStream的构造函数:(1)PrintStream(boolean autoFlush,OutputStream out)(2)PrintStream(OutputStream out)(3)PrintStream(OutputStream out,boolean autoFlush)(4)PrintStream(OutputStream out,boolean autoFlush,String encoding),2023/11/17,第7章 输入输出流,31,7.2.2 OutputStream类,ByteArrayOutputStreamByteArrayOutputStream类是将数据写入流的内部字节数组缓冲区,同时,流内部维护一个写入字节的计数器,记录写入的字节数。实际执行时将一个输出流指向一个Byte数组,但这个Byte数组是ByteArrayOutputStream内部内置的,不需要我们来定义。该类有两个构造函数:(1)ByteArrayOutputStream():该构造函数会在内部创建一个长度为32的Byte数组;(2)ByteArrayOutputStream(int n):在对象内部创建一个长度为n的Byte数组。ByteArrayOutputStream从OutputStream类继承下来,所以它具write、flush及close等方法,同时它还具有以下几个特殊的方法:(1)toString():将对象内部的Byte数组转化成字符串(String(buf,0,count);(2)toString(int n):将对象对部的Byte数组转化成字符串,编码方式为n;(3)toString(String n):将对象对部的数组转化成字符串,编码方式为n;(4)toByteArray():返回对象内部的Byte数组;(5)writeTo(OutputStream):将内部Byte数组输出到指定的输出流;(6)reset():将对象内部Byte数组的长度设为0,count=0;(7)size():返回Byte数组长度。例7-6,2023/11/17,第7章 输入输出流,32,7.2.2 OutputStream类,ObjectOutputStreamObjectOutputStream类是用于将原始数据类型以及整个对象写到一个流中。ObjectOutputStream从OutputStream继承下来,并实现了ObjectOutput,ObjectStreamConstants这两个接口。它负责将指定对象输出到指定的输出流,可以将非static、非transient的属性及值、对象的类定义输出到指定的输出流。该类有一个非常用的方法:writeObject(Object obj);该方法将obj输出到指定的输出流,以下是该类的例子:FileOutputStream f=new FileOutputStream(tmp);ObjectOutput s=new ObjectOutputStream(f);s.writeObject(Today);s.writeObject(new Date();s.flush();可以使用transient修饰符规定一些变量的值不被输出到指定的输出流.,2023/11/17,第7章 输入输出流,33,7.2.3 Reader类,在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这种流对于以16位的Unicode码表示的字符流处理很不方便。从JDK1.1开始,java.io包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类。除了字节数据外,字符数据也是一种软件经常使用的数据类型,如文本数据的存取处理。Java提供了对字符类型的数据流操作,这就是字符流。与字节流不同,字符流的基本类是Reader类和Writer类。这两个类是所有基于字符的流类的超类。与InputStream和OutPutStream相同,它们也是Object的子类,也是抽象类,只提供了一系列用于字符流处理的接口,不能直接用来创建对象。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组,2023/11/17,第7章 输入输出流,34,7.2.3 Reader类,Reader类是处理所有字符流输入类的父类,Reader类具有以下方法:读取字符 public int read()throws IOException;/读取一个字符,返回值为读取的字符 public int read(char cbuf)throws IOException;/读取一系列字符到数组cbuf中,返回值为实际读取的字符的数量 public abstract int read(char cbuf,int off,int len)throws IOException;/读取len个字符,从数组cbuf 的下标off处开始存放,返回值为实际读取的字符数量,该方法必须由子类实现 标记流 public boolean markSupported();/判断当前流是否支持做标记 public void mark(int readAheadLimit)throws IOException;/给当前流作标记,最多支持readAheadLimit个字符的回溯。public void reset()throws IOException;/将当前流重置到做标记处 关闭流 public abstract voi

    注意事项

    本文(输入输出流Java程序设计及应用.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开