Java程序设计 教学课件 ppt 作者 朱喜福 第6章

上传人:E**** 文档编号:89368688 上传时间:2019-05-24 格式:PPT 页数:68 大小:562KB
返回 下载 相关 举报
Java程序设计 教学课件 ppt 作者  朱喜福 第6章_第1页
第1页 / 共68页
Java程序设计 教学课件 ppt 作者  朱喜福 第6章_第2页
第2页 / 共68页
Java程序设计 教学课件 ppt 作者  朱喜福 第6章_第3页
第3页 / 共68页
Java程序设计 教学课件 ppt 作者  朱喜福 第6章_第4页
第4页 / 共68页
Java程序设计 教学课件 ppt 作者  朱喜福 第6章_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《Java程序设计 教学课件 ppt 作者 朱喜福 第6章》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 朱喜福 第6章(68页珍藏版)》请在金锄头文库上搜索。

1、第6章 Java的输入输出流,6.1 文件输入输出流 6.2 提高读写效率和增强读写功能 6.3 通过管道流传送数据 6.4 存储和还原串行化对象 6.5 目录和文件操作 6.6 定位读写文件随机访问 6.7 合 成 文 件 6.8 字符流Reader和Writer,Java中数据输入输出的所有功能实现都是通过java.io包中的类和接口来完成的。,图6-1 java.io包中的一些处理数据流和文件的类,InputStream和OutputStream类及其大量的子类都是处理以字节(8位)为基本单位的字节流类;Reader和Writer类及其大量的子类是专门处理字符(16位)流的类。 File

2、类是专门用来处理文件的类,RandomAcessFile类实现了文件的随机读写。,6.1 文件输入输出流,6.1.1 文件输入流 文件输入流类FileInputStream是InputStream类的子类,该类重写了其父类的大部分方法,用来打开文件并以字节的方式从文件读取数据。,1创建文件输入流对象 (1)public FileInputStream(String name) throws FileNotFoundException 参数name包含路径和文件名。例如,读取c盘javat目录下文件a.txt: FileInputStream fis = new FileInputStream(

3、 “c:javata.txt“ );,(2)public FileInputStream(File file) throws FileNotFoundException 例如,读取当前目录下的子目录temp下的文件b.txt: File file = new File(“./temp/b.txt“); FileInputStream fis = new FileInputStream( file);,2从输入流中读取字节数据 (1)public int read() throws IOException 从输入流中读取一个字节(8位)数据,读完一个字节后将读取位置移到下一个字节。该方法的返回值

4、是0255之间的一个字节数据。,(2)public int read(byte b) throws IOException 从输入流中读取长度为b.length的字节数据,写入字节数组b,返回本次实际读取的字节数。每调用一次,读取位置移动相应的字节数。,(3)public int read(byte b,int off,int len)throws IOException 从输入流中读取长度为len的数据,写入字节数组b中从索引off开始的位置,返回本次实际读取的字节数。每调用一次,读取位置移动相应的字节数。 上面的3个read方法若返回1,则表明当前读取位置已经到达流的末尾位置,即已将流中的

5、字节数据读完,标志流的结束。,(4)public int available()throws IOException 返回输入流中可以读取的字节数。 3关闭流 public void close() throws IOException; 调用这个方法将关闭流。通常系统对流对象进行垃圾收集时,会自动调用close()方法,但显式调用它是个良好的编程习惯。,6.1.2 文件输出流 1创建文件输出流对象 public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(File fil

6、e) throws IOException public FileOutputStream(String name,boolean append) throws FileNotFoundException,构造方法中的参数可以是包含路径和文件名的字符串或文件类对象。如果文件不存在,则建立文件。逻辑值append为true时,写入的字节数据追加到文件末尾;逻辑值append为false时,写入字节数据覆盖文件原来的内容。,2输出流向文件写入字节数据 (1)public void write(int b) throws IOException 将指定的一个字节数据b输出到文件。 (2)public

7、 void write(byte b) throws IOException 将字节数组b中的b.length个字节数据输出到文件。,(3)public void write(byte b,int off,int len) throws IOException 将字节数组b中从下标off开始,长度为len个字节的数据输出到文件。 3关闭流 public void close() throws IOException 关闭输出流。,6.2 提高读写效率和增强读写功能,6.2.1 增加缓冲 BufferedInputStream类和BufferedOutputStream类是增加了缓冲区的输入输出

8、流类,它们用来连接别的输入输出流,以获得读写性能上的提高。,(1)创建缓冲输入流对象 public BufferedInputStream(InputStream in) public BufferedInputStream(InputStream in,int size),(2)创建缓冲输出流对象 public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream out,int size) 整型参数size用来指定缓冲区的字节大小,如果不指定缓冲区的字节大小则创建一个缺省缓冲区大小(5

9、12KB)的缓冲流。,数据首先写入缓冲区,当缓冲区的数据满时,数据才会写入BufferedOutputStream所连接的输出流; 当缓冲区未满时,可以用该类的方法flush( )将缓冲区的数据强制全部写入文件。 缓冲流类分别覆盖了其父类读、写数据的各个read方法和write方法 。 缓冲区的作用除了可以提高性能外,还提供了标记读取位置(mark方法)和重置标记(reset方法)、跳过指定的字节数(skip方法)。,6.2.2 读写基本数据类型数据 Java中提供了DataInputStream类和DataOutputStream类,它们分别实现了DataInput接口和DataOutput

10、接口,因此可创建这两个类的对象,实现读写基本数据类型的数据和Unicode编码(UTF-8)格式的字符串。每读写一个数据,读写位置移动所对应的字节数。,DataInputStream dis = new DataInputStream( new BufferedInputStream( new FileInputStream(“openFile.png“);,FileInputStream fis= new FileInputStream(“openFile.png“); BufferedInputStream bis= new BufferedInputStream(fis); DataIn

11、putStream dis = new DataInputStream(bis);,6.3 通过管道流传送数据,1创建管道输入流(PipedIntputStream)对象 (1)public PipedInputStream() 创建一个没有被连接的管道输入流,使用前必须连接到一个管道输出流。,(2)public PipedInputStream(PipedOutputStream src) throws IOException 创建一个管道输入流,它被连接到一个管道输出流src。,2创建管道输出流(PipedOuttputStream) 对象 (1)public PipedOutputStr

12、eam() 创建一个没有被连接的管道输出流,使用前必须连接到一个管道输入流。 (2)public PipedOutputStream(PipedInputStream snk) throws IOException 创建一个管道输出流,它被连接到一个管道输入流snk。,3管道连接方法 (1)public void connect(PipedOutputStream src) throws IOException 把一个没有被连接的管道输入流连接到管道输出流src。,(2)public void connect(PipedInputStream snk) throws IOException 把

13、管道输出流(发送数据)连接到管道输入流snk(接收数据)。,6.4 存储和还原串行化对象,Java中对象的串行化的含义是:将内存中的类对象转化为一系列字节,记录类对象的状态数据,并进行串行传输(一次一个字节)或保存为文件,以供其他的程序使用。,为了串行化,对象必须实现空的Serializable接口,该接口中没有定义任何方法,只是一个特殊的标记,用来告诉Java编译器,这个对象参加了串行化的协议,可以把它串行化。 关键字transient用来修饰不参与串行化的数据。,1创建对象输入输出流 (1)public ObjectInputStream(InputStream in) 创建对象输入流,参

14、数为其他输入流对象。 (2)public ObjectOutputStream(OutputStream out) 创建对象输出流,参数为其他输出流对象。,2读、写对象流 (1)public final void writeObject(Object obj) throws IOException 对象输出流类的方法,用来写入串行化对象。该方法抛出IOException。 (2)public final Object readObject() throws OptionalDataException, ClassNotFoundException, IOException,该方法抛出两个异常:

15、如果流中的对象不是要读取的对象类型,则抛出OptionalDataException异常;如果串行化的对象恢复时,Java虚拟机找不到该类的.class文件,即读取的类对象找不到,则抛出异常ClassNotFoundException。 这两个类中除基本的读写处理方法之外,还提供了一些读写Java基本数据类型、读写字符串的方法。,6.5 目录和文件操作,File类(文件类)是Object类的直接子类,在java.io包中。,常用File类的以下构造方法创建File对象。 public File( String path ) 参数path是包含目录和文件名的字符串 。 public File(

16、String path,String name ) 参数path是目录,name是文件名(文件名中可包含子目录)。,6.5.1 获取文件信息和更改文件属性 6.5.2 列表目录下的文件 如果File对象是目录,而不是文件,则可以用下面的方法列表目录下的文件。 public String list( ) 返回字符串数组,数组元素是目录下的所有文件名和子目录名。, public String list(FilenameFilter filter) 该方法的参数是实现了FilenameFilter接口的类的对象。方法返回字符串数组,数组元素是目录下过滤后的文件名。 FilenameFilter是一个接口,其中只有一个抽象方法: public boolean accept(File dir,String name),6.5.3 获取根目录和创建新目录 如果需要知道磁盘上的所有文件,则要找出系统平台的所有根目录名。 用File类的静态方法listRoots()可以获得所有根目录: public static Fi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号