包ã€å¼‚常与输入输出 4
包ã€å¼‚常与输入输出 4. 本å•元教å¦å†…容. 输入输出æµçš„æ¦‚念 å—èŠ‚èŠ‚ç‚¹æµ å—符节点æµ. æµçš„æ¦‚念. 大多数应用程åºéƒ½éœ€è¦ä¸Žå¤–部设备进行数æ®äº¤æ¢ï¼Œæœ€å¸¸è§çš„外部设备包å«ç£ç›˜ï¼Œç½‘络,键盘和显示器ç‰ã€‚ IO 就是指应用程åºå¯¹è¿™äº›è®¾å¤‡çš„æ•°æ® 输入和输出 在 Java ä¸ï¼Œæˆ‘们将这些输入输出的数æ®éƒ½çœ‹ä½œ æ•°æ®æµ 。å³ä¸€ä¸²è¿žç»ä¸æ–的数æ®çš„集åˆï¼Œå°±åƒæ°´ç®¡é‡Œçš„æ°´æµã€‚ è¿™æ ·åšæœ‰ä»€ä¹ˆå¥½å¤„? å±è”½äº†æ•°æ®æºä¸Žæ•°æ®å®¿çš„ å¤šæ ·æ€§ 与 夿‚性 ï¼Œç»™ç¨‹åºæä¾›äº†ä¸€ä¸ªç»Ÿä¸€çš„æ“作界é¢å’Œæ“作æµç¨‹ã€‚. 输入输出æµçš„基本概念. è¾“å…¥æµ ï¼šè¯»å–æ•°æ®æ—¶ä¸Ž æ•°æ®æº 之间建立的数æ®é€šé“ï¼›
包ã€å¼‚常与输入输出 4
E N D
Presentation Transcript
本单元教学内容 • 输入输出流的概念 • 字节节点流 • 字符节点流
流的概念 • 大多数应用程序都需要与外部设备进行数据交换,最常见的外部设备包含磁盘,网络,键盘和显示器等。IO就是指应用程序对这些设备的数据输入和输出 • 在Java中,我们将这些输入输出的数据都看作数据流。即一串连续不断的数据的集合,就像水管里的水流。 • 这样做有什么好处? • 屏蔽了数据源与数据宿的多样性与复杂性,给程序提供了一个统一的操作界面和操作流程。
输入输出流的基本概念 • 输入流:读取数据时与数据源之间建立的数据通道; • 输出流:输出数据时与数据宿(数据槽)之间建立的数据通道。 如果我们要将文件A的内容写入文件B,那么要读取文件A的内容和写入文件B时,我们分别需要建立什么流? 注意:输入和输出是相对于应用程序而言的。 输入流 输出流
流的分类 • 按功能划分: • 输入流 • 输出流 • 按流中的数据类型划分: • 字节流:以字节为传输单位 • 字符流:以字符为传输单位,特别用于文本数据 • 按建立方式和工作原理划分: • 节点流:程序与输入源或输出宿之间直接建立的流 • 过滤流:以某一个节点流作为流的来源,并对其进行一些加工处理的流。能有效改善输入/输出操作
基本流类 • 字节流 • 输入字节流:InputStream • 输出字节流:OutputStream • 字符流 • 输入字符流:Reader • 输出字符流:Writer • 以上四个基本流类都是抽象类,只是为具体其子类规定要实现的方法。 • 由其具体子类负责创建与各种数据源或数据宿的数据流。
InputStream相关方法 • 3个读取数据的方法 • int read() //将所读字节以整数类型返回,当没有字节时返回-1 • int read(byte[] buffer) //返回的所读字节数,无时返回-1 • int read(byte[] buffer,int offset,int length) • 其它方法 • void close()
OutputStream相关的方法 • 3个写数据的方法 • void write(int c) • void write(byte[] buffer) • void write(byte[] buffer int offset,int length) • 其它方法 • void close() • void flush()
举例 • 使用字节流进行文件的拷贝例5_17 • 1。分析 • 要实现文件拷贝,必须有两个文件,一个为源文件,另一个为目标文件 • 要从源文件中读取数据,我们需要创建一个输入流 • 要向目标文件写入数据,我们需要创建一个输出流 • 2。字节文件流:用来构建与文件间的字节流 • 文件输入流:FileInputStream • 文件输出流:FileOutputStream • 如:FileOutputStream file=new FileOutputStream(“myFile.txt”);
小结 • 使用流进行输入/输出操作的基本步骤: • 导入相应的流类 ,如import java.io.*; • 创建相应的流对象 • 使用流对象进行数据的输入/输出操作处理 • 关闭流对象 • FileInputStream是InputStream类的子类,是一种字节输入流,注意他的命名方式 • FileOutputStream是OutputStream类的子类,是一种字节输出流,注意他的命名方式
字符节点流 • Java中的字符是Unicode编码,是双字节,而InputStream和OutputStream是用来处理单字节的,在处理字符文本时不太方便,Java就为字符文本的输入输出专门提供了一套单独的类。 • Reader、Writer与InputStream、OutputStream相对应,也是两个抽象类
Reader的相关方法 • 3个读数据方法 • int read() • int read(char[] cbuf) • int read(char[] cbuf,int offset,int length) • 其它方法 • void close()
Writer的相关常用方法 • 5个读方法 • void write(int c) • void write(char[] cbuf) • void write(char[] cbuf,int offset,int length) • void write(String string) • void write(String string,int offset,int length) • 其它方法 • void close()
举例 • 使用字符流实现文本文件内容显示例5_18 • 1。分析 • 程序要求将文本文件的内容显示到屏幕上 • 要从文本文件中读取数据,我们需要创建一个字符文件输入流 • 要向屏幕输出数据,我们需要有一个输出流(System.out) • 2。字符文件流:用来构建与文件间的字符流 • 文件输入流:FileReader • 文件输出流:FileWriter • 如:FileReader file=new FileReader(“myFile.txt”);
小结 • 操作的基本步骤: • 导入相应的流类 ,如import java.io.*; • 创建相应的流对象 • 使用流对象进行数据的输入/输出操作处理 • 关闭流对象 • FileReader是Reader类的子类,是一种字符输入流,注意他的命名方式 • FileWriter是Writer类的子类,是一种字符输出流,注意他的命名方式
作业 • 作业:习题11,12