java08(第8章输入输出流).ppt
《java08(第8章输入输出流).ppt》由会员分享,可在线阅读,更多相关《java08(第8章输入输出流).ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java语言程序设计清华大学出版社第第8章输入输出流章输入输出流第第8章章主要内容主要内容1、输入输出流、输入输出流2、文件处理、文件处理3、随机存取文件和本地可、随机存取文件和本地可执行文件执行文件4、数据流与对象流、数据流与对象流5、Java多媒体技术多媒体技术8.1输入输出流输入输出流8.1.1流的概念流的概念流是一个比文件所包含范围更广的概念。流是一个比文件所包含范围更广的概念。流是一个可被顺序访问的数据序列,它是对计流是一个可被顺序访问的数据序列,它是对计算机输入数据和输出数据的抽象。算机输入数据和输出数据的抽象。图8.1“流”是数据从一种设备流向另一种设备的过程8.1.2io类库类
2、库流序列中的数据既可以是未经加工流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数码处理后符合某种格式规定的特定数据。所以据。所以Java中的数据流有字节流和字中的数据流有字节流和字符流之分。符流之分。在在java.io包中有四个基本类:包中有四个基本类:InputStream、OutputStream及及Reader、Writer类,它们分别处理字节类,它们分别处理字节流和字符流。如图流和字符流。如图8.2所示。所示。图8.2流的分类1、字节流、字节流在在io类库中,类库中,InputStream和和Output
3、Stream是处理字节数据的基本是处理字节数据的基本输入输出类,它们处于输入输出类,它们处于java.io包最顶包最顶层。这两个类均为抽象类,也就是说它层。这两个类均为抽象类,也就是说它们不能被实例化,必须生成子类之后才们不能被实例化,必须生成子类之后才能实现一定的功能。能实现一定的功能。在在java.io包中定义了很多这二个基本类具体实现包中定义了很多这二个基本类具体实现输入输出功能的子类,表输入输出功能的子类,表8.1为部分常用字节输入为部分常用字节输入流类和字节输出流子类的功能。流类和字节输出流子类的功能。类名功能FileInputStream和FileOutputStream文件流,实
4、现在本地磁盘文件系统中的文件进行顺序读写操作。ByteArrayInputStream和ByteArrayOutputStream字节型数组流,实现与内存缓冲区的同步读写及对CPU寄存器的读写操作。ObjectInputStream和ObjectOutputStream对象流,将对象作为一个数据通过流进行传输和存储。FilterInputStream和FilterOutputStream过滤流,是一个抽象类。它们都有实现具体功能的子类。DataInputStream和DataOutputStream数据输入输出流,是过滤流的子类,实现独立于具体机器的带格式的读写操作。BufferedInput
5、Stream和BufferedOutputStream将数据读写到缓冲区,它们是过滤流的子类。表8.1部分常用字节输入流类和输出流类的功能2、字符流、字符流处理字符数据的基本输入输出的类处理字符数据的基本输入输出的类是是Reader和和Writer,它们也处于,它们也处于java.io包最顶层,且这两个类均为抽象类,包最顶层,且这两个类均为抽象类,Java.io包中其它处理字符流的类都是从包中其它处理字符流的类都是从这两个类继承而来的。这两个类继承而来的。由于由于Reader和和Writer是抽象类,因此,是抽象类,因此,在在java.io包中定义了许多这二个处理字符流包中定义了许多这二个处理
6、字符流基本类具体实现输入输出功能的子类,表基本类具体实现输入输出功能的子类,表8.2为部分常用字符输入流类和字符输出流为部分常用字符输入流类和字符输出流子类的功能。子类的功能。类名功能BufferedReader和BufferedWriter用于字符流读写缓冲存储。InputStreamReader和OutputStreamWriter用于将字节码与字符码相互转换。FileReader和FileWriter用于字符文件的输入输出。表8.2部分常用字符输入流类和输出流类的功能8.2文件处理文件处理8.2.1文件与目录管理文件与目录管理在Java语言的java.io包中,由File类提供了描述文件
7、和目录的操作与管理方法。但File类不是InputStream、OutputStream或Reader、Writer的子类,因为它不负责数据的输入输出,而专门用来管理磁盘文件与目录。1、创建、创建File类文件对象类文件对象File类共提供了三个不同的构造函数,类共提供了三个不同的构造函数,以不同的参数形式灵活地接收文件和目以不同的参数形式灵活地接收文件和目录名信息。录名信息。(1)Filef1=newFile(Stringpath)(2)Filef2=newFile(Stringpath,Stringname)(3)Filef3=newFile(Filedir,Stringname)2、获取
8、文件及目录属性、获取文件及目录属性一个对应于某磁盘文件或目录的一个对应于某磁盘文件或目录的File对对象一经创建,象一经创建,就可以通过调用它的方法来就可以通过调用它的方法来获得文件或目录的属性。获得文件或目录的属性。获得文件或目录的属性获得文件或目录的属性,较常用的方法较常用的方法:方法名方法名 功能功能public boolean exists()判断文件或目录是否存在判断文件或目录是否存在public boolean isFile()判断是文件还是目录判断是文件还是目录 public boolean isDirectory()判断是文件还是目录判断是文件还是目录public String
9、 getName()返回文件名或目录名返回文件名或目录名public String getPath()返回文件或目录的路径。返回文件或目录的路径。public long length()获取文件的长度获取文件的长度 public String list()将目录中所有文件名保存在字符串将目录中所有文件名保存在字符串数组中返回。数组中返回。3、文件及目录操作、文件及目录操作File类中还定义了一些对文件或目录进行管类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有:理、操作的方法,常用的方法有:(1)重命名文件)重命名文件publicbooleanrenameTo(FilenewFi
10、le);(2)删除文件)删除文件publicvoiddelete();(3)创建目录)创建目录publicbooleanmkdir();8.2.2文件流文件流在在Java中,操作二进制文件使用字节输中,操作二进制文件使用字节输入输流,操作字符文件使用字符输入输出入输流,操作字符文件使用字符输入输出流。对文件进行输入输出处理的四个类:流。对文件进行输入输出处理的四个类:FileInputStream:字节文件输入流;:字节文件输入流;FileOutputStream:字节文件输出流;:字节文件输出流;FileReader:字符文件输入流;:字符文件输入流;FileWriter:字符文件输出流。:
11、字符文件输出流。1、字节文件输入流读取文件、字节文件输入流读取文件 FileInputStream类是从类是从InputStream 类中派生出来的输入流类,它用于处理类中派生出来的输入流类,它用于处理二进制文件的输入操作。它的构造方法二进制文件的输入操作。它的构造方法有下面三种形式:有下面三种形式:FileInputStream(String filename);FileInputStream(File file);FileInputStream(FileDescriptor fdObj);(1)FileInputStream类类文件输入流只是建立了一条通往数据的通文件输入流只是建立了一条通
12、往数据的通道,应用程序可以通过这个通道读取数据,要道,应用程序可以通过这个通道读取数据,要实现读取数据的操作,需要使用实现读取数据的操作,需要使用read()方法。方法。使用使用read()方法有三种格式:方法有三种格式:intread();intread(byteb);intread(byteb,intoff,intlen);(2)从文件输入流中读取字节)从文件输入流中读取字节【例例8-1】1./*读取文件读取文件*/2.import java.io.FileInputStream;3.import javax.swing.JOptionPane;4.class Example8_15.pu
13、blic static void main(String args)6.byte buffer =new byte2056;7.String str;8.try9.File file=new File(d:/jtest/test.dat);10.FileInputStream fileInput=new FileInputStream(file);11.int bytes=fileInput.read(buffer,0,2056);/读到的字节数读到的字节数12.str=new String(buffer,0,bytes);13.14.catch(Exception e)15.16.str=e
14、.toString();17.18.JOptionPane.showMessageDialog(null,str);19.System.exit(0);/退出程序退出程序20.21.2、字节文件输出流写入文件、字节文件输出流写入文件FileOutputStream类是从类是从OutputStream类派类派生出来的输出类,它具有处理向文件中写数据的能生出来的输出类,它具有处理向文件中写数据的能力。该类主要应用于处理字节文件流,例如图像文力。该类主要应用于处理字节文件流,例如图像文件或声音文件等。它的构造方法有以下三种形式:件或声音文件等。它的构造方法有以下三种形式:FileOutputStre
15、am(Stringfilename)FileOutputStream(Filefile)FileOutputStream(FileDescriptorfdObj)其各参数的含义同其各参数的含义同FileInputStream一样。一样。(1)FileOutputStream类类(2)把字节发送到文件输出流)把字节发送到文件输出流与输入流的功能类似,输出流只是建立了与输入流的功能类似,输出流只是建立了一条通往数据要去的目的地的通道,数据并一条通往数据要去的目的地的通道,数据并不会自动进入输出流通道,我们要使用不会自动进入输出流通道,我们要使用write()方法把字节发送到输出流。方法把字节发送到
16、输出流。使用使用write()方法有三种格式:方法有三种格式:write(intb)write(byteb)write(byteb,intoff,intlen)3、字符文件流读写文本文件、字符文件流读写文本文件处理字符文件有二个与处理二进制文处理字符文件有二个与处理二进制文件件FileInputStream和和FileOutputStream等等价的类:价的类:FileReader和和FileWriter,它们分,它们分别是别是Reader和和Writer类的子类。类的子类。(1)FileReader和和FileWriter它们的构造方法分别有三种形式:它们的构造方法分别有三种形式:FileR
17、eader(Stringfilename);FileReader(Filefile);FileReader(FileDescriptorfdObj);FileWriter(Stringfilename);FileWriter(Filefile);FileWriter(FileDescriptorfdObj);此外,此外,Java还提供了还提供了BufferedReader类和类和BufferedWriter类与类与FileReader类和类和FileWriter类配合使用,将字符输入或输出到类配合使用,将字符输入或输出到缓冲区,使数据处理速度大大加快,提高了缓冲区,使数据处理速度大大加快,提高
18、了读写效率。读写效率。BufferedReader的构造方法为:的构造方法为:BufferedReader(Readerin);BufferedWriter的构造方法为的构造方法为:BufferedWriter(Writerout);与字节输入输出流的功能一样,与字节输入输出流的功能一样,Reader和和Writer只是建立一条通往字符文件的通道,只是建立一条通往字符文件的通道,而要实现对字符数据的读写操作,还需要读而要实现对字符数据的读写操作,还需要读方法和写方法来完成。方法和写方法来完成。从输入流中按行读取字符的方法:从输入流中按行读取字符的方法:StringreadLine();向输出流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java08 输入输出
限制150内