Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章

上传人:E**** 文档编号:89369694 上传时间:2019-05-24 格式:PPT 页数:15 大小:1.39MB
返回 下载 相关 举报
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章_第1页
第1页 / 共15页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章_第2页
第2页 / 共15页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章_第3页
第3页 / 共15页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章_第4页
第4页 / 共15页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第十章(15页珍藏版)》请在金锄头文库上搜索。

1、第10章 Java数据流,数据流,输入输出过程涉及到计算机的内存和外设,所谓输入输出就是内存与外设之间数据传输的过程。输入输出都是相对于计算机内存来说的,将数据从外设传递给内存称为输入,数据由内存传递到外设称为输出。 在Java中,把这些不同类型的输入、输出源抽象为流(Stream)。 而其中输入或输出的数据则称为数据流(Data Stream),用统一的接口来表示。,数据流的基本概念,数据流是指一组有顺序的、有起点和终点的字节集合,输入输出过程中传递的数据组成数据流。从数据流中读取数据时,必须有一个数据源与该数据流相连。 数据的类型不同,所以数据流可划分为不同的集合。根据数据的特点,集合又划

2、分为各个子集,从而形成层次关系。最顶层是输入数据流(input stream)和输出数据流(output stream),以及现行版本中新加入的读者(Reader)和写者(Writer),输入数据流只能读不能写,而输出数据流只能写不能读。,输入数据流,输入数据流(Input Stream) 只能读不能写的数据流,用于从外设向计算机内存传递数据。 java.io包的输入数据流由抽象类InputStream继承而来,并且实现了其中所有方法。 从数据流中读取数据时,必须有一个数据源与该数据流相连。 输入数据流中提供了read()方法,用来读取数据,所读取的数据都默认为字节类型。 当结束对一个数据流的

3、操作时应该将其关闭,同时释放与该数据流相关的资源,用到的方法即是close()。建议程序中显式关闭输入输出流。,输出数据流,输出数据流(Output Stream) 只能写不能读的流,用于从计算机内存向外设输出数据。 write()系列方法是输出的主要方法,方法的使用方式和所带的参数与read()方法非常类似。 当结束对输出数据流的操作时也应该使用close()方法将其关闭。,文件数据流,文件输入输出数据流 FileInputStream FileOutputStream 这两个类用来进行文件的I/O处理,其数据源都是外存中的文件。 例10-1 建立数据源和数据终点 FileInputStre

4、am inputfile = new FileInputStream(“myInputFile.txt“); FileOutputStream outfile = new FileOutputStream(“myOutputFile.txt“); 在双引号中直接指出文件名,从而创建文件数据流对象,myInputFile是数据流的数据源,用来读入数据;而myOutputFile是数据终点,用来向其中写入数据。,文件数据流,例10-2 将数据写入文件 FileOutputStream out = new FileOutputStream(“myOutputFile.txt“); out.write

5、(H); out.write(69); out.write(76); out.write(L); out.write(O); out.write(!); out.close(); 文件myOutputFile.txt中会保存字符串HELLO!。,过滤器数据流,基本数据输入输出操作只能提供对字节或字符的处理,当需要处理其他类型时,例如整数、浮点数或字符串时,需要使用一个过滤器类来包装输入流。 过滤器流在创建时与一个已经存在的数据流相连,这样在从这样的数据流中读取数据时,它提供的是对一个原始输入数据流的内容进行了特定处理的数据。 过滤器数据流包括缓冲区数据流、数据流等。 缓冲区数据流有Buffer

6、edInputStream和BufferedOutputStream,它们是在数据流上增加了一个缓冲区。当读写数据时,数据以块为单位先进入缓冲区(块的大小可以进行设置),其后的读写操作则作用于缓冲区。,缓冲区数据流示例,例10-3 缓冲区数据流示例 使用默认的缓冲区大小: FileInputStream fis1 = new FileInputStream(“myFile“);/基本输入数据流 InputStream is = new BufferedInputStream(fis1); /缓冲区输入数据流 FileOutputStream fos1 = new FileOutputStrea

7、m(“myFile“); /基本输出数据流 OutputStream os = new BufferedOutputStream(fos1);/缓冲区输出数据流 FileInputStream fis2 = new FileInputStream(“myFile“); InputStream is = new BufferedInputStream(fis2,1024);/设定缓冲区大小 FileOutputStream fos2 = new FileOutputStream(“myFile“); OutputStream os = new BufferedOutputStream(fos2,

8、1024);/设定缓冲区大小 因为使用了缓冲区,所以在关闭缓冲区输出流之前,需要使用flush()方法,强制输出缓冲区中未来得及写入文件的数据,保证数据的完整性。,基本字符流,Java中另外两个顶层输入输出类是Reader和Writer,它们专门用于处理字符流。 例10-4 读者写者的构造方法 InputStreamReader(InputStream in); /默认规范 InputStreamReader(InputStream in, String enc); /指定规范enc OutputStreamWriter(OutputStream out); /默认规范 OutputStrea

9、mWriter(OutputStream out, String enc);/指定规范enc,缓冲区读者写者示例,在使用缓冲区数据流时,都要记住在BufferedWriter中使用flush()方法,以强制清空缓冲区中的剩余内容,防止数据丢失。见程序10-2。 import java.io.*; class FileToUnicode public static void main(String args) try FileInputStream fis = new FileInputStream(“file1.txt“); InputStreamReader dis = new InputS

10、treamReader(fis); BufferedReader reader = new BufferedReader(dis); String s; int count = 1; /记行数 while( (s = reader.readLine() != null ) System.out.println(“Line “ + count + “: “+s); count+; dis.close(); catch(IOException e) System.out.println(e); /main() /class 程序10-2中,每从文件“file1.txt”中读出一行,就将其显示出来,

11、并在行首加上字符串“Line”及行号。,File类,要创建一个新的File对象可以使用以下三种构造方法: 第一种方法: File myFile; myFile = new File(“mymotd“); 第二种方法: myFile = new File(“/“,“mymotd“); 第三种方法: File myDir = new File(“/“); myFile = new Fle(myDir,“mymotd“); 使用何种构造方法经常要由其他被访问的文件对象来决定。,随机访问文件,程序在读写文件时常常不仅要能够从头读到尾,还要能够像访问数据库那样访问文本文件,到达一个位置读一条记录,到达另

12、一位置读另一条记录,然后再读另一条每次都在文件的不同位置进行读取。Java语言提供了类RandomAccessFile来处理这种类型的输入输出。 可以使用文件名来创建一个随机访问文件,语句格式如下: myRAFile=new RandomAccessFile(String name, String mode); 也可以使用文件对象来创建,语句格式如下: myRAFile=new RandomAccessFile(File file, String mode); 参数mode决定是以只读方式(“r“)还是以读写方式(“rw“)访问文件。,随机访问文件,文件必须采用顺序处理方式,当不是连续访问文件

13、时,需要对访问位置进行重定位,这个位置由文件读写指针来指示。 Java语言提供了移动文件读写指针的几个方法, getFilePointer()可以返回文件指针的当前位置 seek(long pos)将文件指针置于指定的绝对位置,其中位置值以从文件开始处的字节偏移量pos来计算,pos为0代表文件的开始;而length()方法可以返回文件的长度。 为文件添加信息时可以利用随机访问文件来完成文件输出的添加模式, myRAFile = new RandomAccessFile(“java.log“,“rw“); myRAFile.seek(myRAFile.length(); 现在文件的读写指针已经移至文件的末尾,如果在这之后使用任何流的write()方法,那么所写入的信息都将添加在原文件之后。,Thank You !,

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

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

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