《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章

上传人:E**** 文档编号:89401053 上传时间:2019-05-24 格式:PPT 页数:41 大小:259.50KB
返回 下载 相关 举报
《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章_第1页
第1页 / 共41页
《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章_第2页
第2页 / 共41页
《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章_第3页
第3页 / 共41页
《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章_第4页
第4页 / 共41页
《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章》由会员分享,可在线阅读,更多相关《《Java程序设计技能教程》-彭德林-电子教案 JAVA程序设计技能教程第8章(41页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计技能教程,主编 彭德林 李德有 中国水利水电出版社 ,第八章 输入输出流,任务一:掌握流及标准输入输出,任务三:掌握常用文件和目录操作,任务二:掌握常用输入输出流使用,任务四:实训八 文件输入输出操作实训,8.1 掌握流及标准输入输出,8.1.1 流及其分类 流是输入/输出设备的一种抽象表示,这些设备是数据源头或是数据终点。 Java应用程序可以从数据源读取数据,向数据目的地写入数据。 流最简单的分类: 当向一个流写入数据的时候,这个流被称为输出流。 当从一个流读取数据的时候,这个流被称之为输入流。 流可以按流动方向,处理位置,功能等分类,详细情况请看书上的表8-1,图 8-1

2、 流是对输入输出设备一种抽象表示,说明:,(1) 首先,程序开发者可以使程序向流中写入数据或者从流中读出数据,你可以把它流想象成一个流入或流出你的程序的有序的数据序列; (2) 其次,流必须连接到数据源或者数据目的地两端的任何一端,你的应用程序可以通过流来向数据源读取数据,或还可以通过流向数据目的地写入数据,即流都有自己的起点和终点,并且是顺序的。流是一个通道,通向数据源或者数据目的地; (3)要知道文件和流的差异。文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。因此,对于文件,人们常会想到目录路径、磁盘存储、文件名、文件和目录名等方面。相反,流提供一种向后备存储器写入

3、字节和从后备存储器读取字节的方式,后备存储器可以为多种存储媒介之一; (4)数据源或数据目的地,凡是可以存储数据都可以作为前面两者之一。,在编写控制台应用程序时,程序要读取从键盘输入的数据。那么程序是怎样读取从键盘输入的数据呢?请看示例: 【例8-1】从键盘按单个字节读取数据。 package chapter08; public class ReadNormalInputStreamByByte /* * 程序8-1:按字节从键盘输入中读取数据 */ public static void main(String args) throws Exception / 从输入流中读取数据的下一个字节,

4、返回 0 到 255 范围内的 int 字节值。 int b=System.in.read(); / 如果因为已经到达流末尾而没有可用的字节,则返回值 -1 while(b!=-1) System.out.println(b); b=System.in.read(); ,8.1.2 标准输入流,8.1.3 标准输出和标准错误,1、 标准输出 在操作系统中定义的三个标准流中,另一个是标准输出流,它同样可以通过java的类System成员获得。它对应于命令行的输出,由封装在System类的静态out成员中且为PrintStream类型。 PrintStream类的主要写数据的方法: print(d

5、ataType data) 打印各种数据类型的值,dataType可以是Java的基本数据类型,也可以是字符数组、对象、字符串。 println(dataType data) 打印各种数据类型的值,然后终止行。dataType可以是Java的基本数据类型,也可以是字符数组、对象、字符串。 printf(参数.) 使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。 write(int b) 将指定的字节写入此流。 write(byte buf) 将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。 append(char ch) 将指定字符添加到此输出流。,【

6、例8-3】使用PrintStream流输出各种数据类型。 package chapter08; public class TestNormalOutputStream public static void main(String args) / 输出各种数据类型 System.out.println(“Hello World!“);/字符串 System.out.println(true);/ 布尔类型 System.out.println(23);/整型 System.out.println(123.3f); /浮点数 System.out.println();/换行 System.out.

7、println(new char7,8,9,4,5);/字符数组 System.out.println(H);/字符类型 System.out.println(0x234);/十六进制整数 System.out.println(122.23d); /双精度小数 System.out.println(“你好!“);/字符串 System.out.append(A);/字符 System.out.write(new byte1,2,3,4);/字节数组 System.out.flush();/刷新缓冲区的数据 ,2、标准错误,标准错误输出流,在默认情况下它通常将错误信息映射到命令行输出,由Syst

8、em类的err成员封装,且也是PrintStream类型。 Java的System类提供一些简单的静态方法调用,允许程序开发者对标准输入、输出、和错误流进行重定向: setIn(InputStream in) - 重新分配“标准”输入流。 setOut(PrintStream out) - 重新分配“标准”输出流。 setErr(PrintStream err) - 重新分配“标准”错误输出流。,【例8-4】重定向方法的简单使用。 主要代码如下: / 获取标准输出流 PrintStream console = System.out; / 创建一个Redirecting.java文件输入流,并对

9、这个基本文件输入流用 / BufferedInputStream流进行装饰。 BufferedInputStream in = new BufferedInputStream( new FileInputStream(“src/chapter08/Redirecting.java“); / 创建一个test.out文件输出流,并对这个基本文件输入流用 / PrintStream流进行装饰。 PrintStream out = new PrintStream( new FileOutputStream(“test.out“); / 重新定向标准输入流 System.setIn(in); / 重新

10、定向标准输出流 System.setOut(out); / 重新定向标准错误入流,8.2 任务二 掌握常用输入输出流使用,InputStream和OutStream类是所有字节输入流和输出流的基类。它们都是抽象类,不能被实例化,然而,这两个类都声明了一些方法,这些方法为它们所表示的流定义了操作的基本集合。它的子类对于读取二进制的数据很有用途。 Reader流和Writer流是能够以字符流的方式读写字节流的对象,所以说字符流本质上就是一个读或写对象所面向的字节流。它们都是抽象类,不能被实例化,然而,这两个类都声明了一些方法,这些方法为它们所表示的流定义了读写字符的基本及相关操作集合。 详细的输入

11、输出流的层次结构及其上面四个类的方法,请看教材。,8.2.3 FileInputStream类和FileOutStream类的使用,FileInputStream类是文件输入流,是从文件系统中的某个文件中获得输入字节,主要针对读取的二进制类型的文件的内容情况下使用它 在使用它时,必须先创建一个FileInputStream类的对象并且连接到数据源上,它提供了三个构造方法: public FileInputStream(File file)通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 public FileInp

12、utStream(String name)通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 public FileInputStream(FileDescriptor fdObj)通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。 在对流的相关操作结束后,一定要调用此方法关闭流,或者,应用程序或系统中有很多流打开的话,则耗资源。 同样,FileOutStream类是文件输出流,是用于将数据写入 File 或 FileDescriptor 的输出流,主

13、要针对写入的二进制类型的文件的内容情况下使用它。 在使用它时,必须先创建一个FileOutputStream类的对象并且连接到数据目的地上,它提供了五个构造方法。,【例8-5】简单读取文件:读取Java应用程序的源代码并正确显示汉字。 import java.io.*; public class FileInputStreamSimpeUsage public static void main(String args) byte buffer=new byte2056; try FileInputStream fileIn=new FileInputStream(“src/chapter08/

14、FileInputStreamSimpeUsage.java“); int bytes=fileIn.read(buffer,0,2056); String str=new String(buffer,0,bytes,“gb2312“); System.out.println(str); / 输出字符串 catch (Exception e) / 捕获异常 / 将异常信息转换为字符串 String err= e.toString(); System.out.println(err); /输出异常信息 ,【例8-6】编写一个复制文件的应用程序。代码见教材 说明:创建一个输入流fileIn连接到S

15、unset.jpg文件上和一个输出流fileOut连接到Sunset1.jpg文件上,若Sunset1.jpg不存在,则会自动创建这个文件,如存在则会覆盖这个文件。声明一个1024长度的字节数组,每次从输入流fileIn中当前位置startPos读取1024个字节存放在buffer数组中,并把buffer数组的内容通过输入流写入到Sunset1.jpg文件中,把当前位置向后移动1024个字节,重复操作直到到达Sunset.jpg文件末尾。要注意是:输入输出流的特点,是每个数据都必须等待排在它前面的数据读入或送出之后才能读写,每次读写操作处理的是字节序列中剩余的未读写数据的第一个,而不能随意选择

16、输入输出的位置,即读写数据是有序的。,8.2.5 FileReader类和FileWriter类使用,可知,FileReader和FileWriter是按字符读写的输入输出流。它的基类是InputStreamReader和OutputStreamReader。在前面知道,InputStreamReader和OutputStreamWriter的基类分别是Reader和Writer,而Reader类和Writer类以及它们的子类并不是流本身,而是提供了以字符流的形式读、写底层流的方法。因此,Reader对象或者Writer对象通常使用底层的InputStream对象和OutputStream对象来创建,InputStream对象和OutputStream对象封装有于外部设备的连接,这种外部设备就是最终的数据源或者数据目的地。 要创建一

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

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

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