Java2实用教程课件(第3版第10章)

Java2实用教程课件(第3版第10章)

ID:46944189

大小:358.81 KB

页数:18页

时间:2019-11-30

上传者:U-145848
Java2实用教程课件(第3版第10章)_第1页
Java2实用教程课件(第3版第10章)_第2页
Java2实用教程课件(第3版第10章)_第3页
Java2实用教程课件(第3版第10章)_第4页
Java2实用教程课件(第3版第10章)_第5页
资源描述:

《Java2实用教程课件(第3版第10章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

第10章 输入输出流10.1File类10.2FileInputStream类10.3FileOutputStream类10.4FileReader类和FileWriter类10.5使用文件对话框打开和保存文件10.6RandomAccessFile类10.7数据流10.8数组流10.9对象流10.10序列化与对象克隆10.11文件锁FileLock10.12Process类中的流10.13带进度条的输入流 I/O流I/O流提供一条通道程序,可以使用这条通道把源中的字节序列送给目的地。把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。而输出流的指向是字节要去的一个目的地(或用户),程序通过向输出流中写入数据把信息传递到目的地。虽然I/O流经常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口。Java的I/O流库提供大量的流类(在包java.io中)。但是,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。 10.1File类File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,不涉及对文件的读写操作构造方法有3个:File(Stringfilename);File(StringdirectoryPath,Stringfilename);File(Filef,Stringfilename); 10.2FileInputStream类使用文件输入流构造方法建立通往文件的输入流时,可能会出现错误(也被称为异常)。为了把一个文件输入流对象与一个文件关联起来,使用类似于下面所示的代码:try{FileInputStreamins=newFileInputStream("myfile.dat");}catch(IOExceptione){System.out.println("Filereaderror:"+e);//文件I/O错误} 从输入流中读取字节read方法给程序提供一个从输入流中读取数据的基本方法,read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0~255之间的一个整数),如果到达源的末尾,该方法返回-1。read方法还有其它一些形式。这些形式能使程序把多个字节读到一个字节数组中:intread(byteb[]);intread(byteb[],intoff,intlen); 10.3FileOutputStream类FileOutputStream提供了基本的文件写入能力。构造方法:FileOutputStream(Stringname)FileOutputStream(Filefile)FileOutputStream流使用write方法把字节写入到输出流达到目的地,write的格式如下:publicvoidwrite(byteb[])其功能是写b.length个字节到输出流。publicvoid.write(byteb[],intoff,intlen)其功能是从给定字节数组中起始于偏移量off处写len个字节到输出流。 10.4FileReader类和FileWriter类与FileInputStream、FileOutputStream字节流相对应的是FileReader、FileWriter字符流,他们分别是Reader和Writer的子类,其构造方法分别是:FileReader(Stringfilename),FileWriter(Stringfilename)。由于汉字在文件中占用2个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象,因为,在Unicode字符中,一个汉字被看作一个字符。 10.5使用文件对话框打开和保存文件使用文件对话框方便地打开和保存文件,因为文件对话框可以使用户很方便的选择文件所在的目录以及文件的名字。 10.6RandomAccessFile类RandomAccessFile类既不是输入流类InputStream类的子类,也不是输出流类OutputStram类的子类流。RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地,换句话说,当我们想对一个文件进行读写操作时,我们可以创建一个指向该文件的RandomAccessFile流即可,这样我们既可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件.构造方法。(1)RandomAccessFile(Stringname,Stringmode)参数name用来确定一个文件名,给出流的源,同时也是流目的地。参数mode取r(只读)或rw(可读写)决定流对文件的访问权限。(2)RandomAccessFile(Filefile,Stringmode)参数file是一个File对象,给出流的源,同时也是流目的地。参数mode取r(只读)或rw(可读写)决定流对文件的访问权限。 10.7数据流DataInputStream类和DataOutputStream类创建的对象被称为数据输入流和数据输出流。这两个流是很有用的两个流,它们允许程序按着机器无关的风格读取Java原始数据。也就是说,当我们读取一个数值时,不必再关心这个数值应当是多少个字节。构造方法(1)DataInputStream(InputStreamin)将创建的数据输入流指向一个由参数in指定的输入流,以便从后者读取数据(按着机器无关的风格读取)。(2)DataOutputStream(OutnputStreamout)将创建的数据输出流指向一个由参数out指定的输出流,然后通过这个数据输出流把Java数据类型的数据写到输出流out。 10.8数组流流的源和目标除了可以是文件外,还可以是计算机内存。字节输入流:ByteArrayInputStream和字节输出流:ByteArrayOutputStream分别使用字节数组作为流的源和目标。使用下列ByteArrayInputStream流的两个构造方法构造字节数组输入流对象:ByteArrayInputStream(byte[]buf)ByteArrayInputStream(byte[]buf,intoffset,intlength) 10.9对象流ObjectInputStream类和ObjectOutputStream类创建的对象被称为对象输入流和对象输出流。对象输出流使用writeObject(Objectobj)方法将一个对象obj写入输出流送往目的地,对象输入流使用readObject()从源中读取一个对象到程序中。构造方法分别是:ObjectInputStream(InputStreamin),ObjectOutputStream(OutputStreamout)。 10.10序列化与对象克隆有时我们想得到对象的一个“复制品”,该复制品的实体是原对象实体的拷贝。复制品实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象的克隆对象或简称克隆。使用对象流很容易得获取一个序列化对象的克隆。我们只需将该对象写入到对象输出流,那么用对象输入流读回的对象一定是原对象的一个克隆。一个类如果实现了Serializable接口,那么这个类创建的对象就是所谓序列化的对象。Serializable接口中的方法对程序是不可见的,因此实现该接口的类不需要实现额外的方法,当把一个序列化的对象写入到对象输出流时,JVM就会实现Serializable接口中的方法,将一定格式的文本——对象的序列化信息,写入到目的地。 10.11文件锁FileLockJDK1.4增加了一个FileLock类,该类的对象称做文件锁。RondomAccessFile创建的流在读写文件时可以使用文件锁,那么只要不解除该锁,其它线程无法操作被锁定的文件 使用文件锁的步骤首先使用RondomAccessFile流建立指向文件的流,该流的读写属性必须是“rw”,例如:RandomAccessFileinput=newRandomAccessFile("Example.java","rw");input流调用方法getChannel()获得一个连接到地层文件的FileChannel对象(信道),例如FileChannelchannel=input.getChannel();信道调用tryLock()或lock()方法获得一个FileLock(文件锁)对象,这一过程也称做对文件加锁,例如:FileLocklock=channel.tryLock(); 10.12Process类中的流Process是java.lang包中的一个类,可以使用该包中的Runtime类调用其静态方法exec得到Process的一个实例,exec方法可以运行一个可执行文件,即启动一个进程,exec方法返回一个Process对象。一个Process对象可以使用方法getErrorStream()获取该进程错误信息的输入流;使用方法getInputStream()获取指向该进程的输入流。方法getOutputStream()获取指向该进程的输出流。利用Process中的流,我们可以获取该进程的某些信息。 10.13带进度条的输入流使用javax.swing包提供的输入流类:ProgressMonitorInputStream,它的构造方法是:ProgressMonitorInputStream(Conmponentc,Strings,InputStreamin);该类创建的输入流在读取文件时会弹出一个显示读取速度的进度条.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭