版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java面向对象程序设计面向对象程序设计第第8章章 输入输出及文件输入输出及文件第8章 输入输出及文件8.1数据流的基本概念数据流的基本概念8.2流的分类流的分类8.3标准输入标准输入/输出流输出流8.4数据流类数据流类8.5文件类文件类File8.6本章小结小结引言输入/输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文件中读取数据或向文件中写数据等等,没有输入和输出的程序就没有实际的应用价值。这就要求任何一门编程语言都要对数据的输入输出做出全面的处理,java语言也不例外。本节课我们重点讲解java语言中如何处理输入输出的问题。教学目的和重难点教学目的和重难点教学目标:教学目标
2、: 1 1、了解流的基本概念和、了解流的基本概念和JavaJava语言中的语言中的I/OI/O流的分类;流的分类; 2 2、了解字节流和字符流的差别,掌握其用法;、了解字节流和字符流的差别,掌握其用法; 3、掌握文件的读写方法;、掌握文件的读写方法;教学重点:教学重点: 数据流的概念、数据流的概念、java数据流的分类、文件的读写操作。数据流的分类、文件的读写操作。教学难点:教学难点: 数据流的概念和输入输出流的区分。数据流的概念和输入输出流的区分。特别注意:特别注意: 本节内容大家站在程序的角度去理解下文中的输入输出本节内容大家站在程序的角度去理解下文中的输入输出概念,时刻把自己当成一段程序
3、。概念,时刻把自己当成一段程序。8.1 数据流的基本概念数据流的基本概念数据流:一组有顺序的有起点和终点的字节集合。也有的书上称为流动的数据缓冲区或者数据管道。 由上面的图形,我们可以看到,有了数据流后,我们的程序不再直接和数据源接触,而是与数据流接触实现数据的输入和输出。也就是说也就是说:流是输入/输出源(键盘,文件,网络连接)等的抽象。数据源程序 数据流8.2 流的分类流的分类 Java1.3及以前版本用及以前版本用java.io.*包内的流实现输入输出包内的流实现输入输出更高版本出现了更高版本出现了java.nio.*和和java.nio.channels包,实包,实现了更新的现了更新的
4、I/O功能。功能。 本书只讲解本书只讲解java.io.*包内的类。包内的类。字符流字符流:是指数据序列的基本构成单位是16位的Unicode 字符数据,如各类基于字符编码的文本文件。字节流字节流:是指数据序列的基本构成单位是8位的字节数据, 如各类基于二进制数据的文件。输入流输入流:指从某个数据来源输入的数据序列只可读不可写。输出流输出流:指将向某个数据目的地输出的数据序列,只可写 不可读。为提高输入输出效率增加了缓冲流,也就是一个流配有一个缓冲区,可以提高效率。注注:(这里的读和写是相对于程序来说的)8.3 标准输入输出流标准输入输出流字符方式下,程序与系统进行交互的方式,起点是键盘终点是
5、显示器。实现的类是:System,在该类中有两个静态的成员变量:in 和out。标准输入:标准输入: System.in是InputStream类的对象,有一个read方法: public int read(byte b) 读入字符放入b字节数组中,返 回实际读取的字节数。 public int read(byte b, int off, int len) 读入字符放入b 字节数组中但从boff位置开始存放,len为可以读 取的最大字节数, 方法返回实际读取的字节数。标准输出:标准输出: System.out是PrintStream类的对象,实现标准输出,可以调用它的println和print
6、或write方法来输出各种类型的数据。特别注意:特别注意: 标准输入会发生IOException异常,而标准输出不会发生任何异常。标准输入输出举例【例【例8-1】从键盘输入字符,在屏幕显示输出这些字符。】从键盘输入字符,在屏幕显示输出这些字符。 import java.io.*;public class IOExample public static void main(String agrs) byte b=new byte30; /定义字节数组可以存放30个字符 int count=0; try count = System.in.read(b); /读字符放b中,返回字节个数 catch
7、(IOException e) System.out.println(“发生了IO异常!”); for(int i=0;icount;i+) /循环输出字符 System.out.println(bi); /输出每一个字符 8.4 数据流类数据流类java.io包中封装了大量的数据流类,支持基本的字节流和字符流的数据流。基本的流类有四个都是抽象类分别是: 基于字符的: Reader(输入流) 、Writer(输出流) 基于字节的: InputStream(输入流) OutputStream(输出流)Java中所有的数据流类都是继承至上面的四个类,形成了丰富的java输入输出流。 字节流字节流I
8、nputStream 类InputStream定义了字节输入流的框架。它的最重要的三个方法(输入流提供数据输入) int read() :从输入流中读一个字节,形成一个0255 之间的整数返回(是一个抽象方法)。 int read(byte b) :读多个字节到数组中。 int read(byte b, int off, int len):从输入流中读取长度为 len的数据,写入数组b中从索引off开始的位 置,并返回读取得字节数。对于这三个方法,若返回1,表明流结束大部分子类的命名是XxxInputStream,例如FileInputStream,DataInputStream字节流字节流I
9、nputStream 的常用方法read():从流中读入数据skip():跳过流中若干字节数available():返回流中可用字节数mark():在流中标记一个位置reset():返回标记过得位置markSupport():是否支持标记和复位操作close():关闭流InputStream 的派生类列表InputStream nByteArrayInputStream 读取输入流到字节数组nFileInputStream 读取文件输入流nFilterInputStream 建立可过滤的输入流wBufferedInputStream 缓冲输入流wDataInputStream 读取数据输入流n
10、ObjectInputStream 读取对象并还原,如图像nPipedInputStream 建立输入流管道并连接到输出流nSequenceInputStream 建立顺序输入流并逐个连接nStringBufferInputStream jdk1.3已不再支持字节流OutputStream类OutputStream定义了字节输出流的功能框架。主要方法: write(int b) 将一个整数输出到流中(只输出低位字节,抽象) write(byte b) 将字节数组中的数据输出到流中 write(byte b, int off, int len) 将数组b中从off指定的位置开始, 长度 len的
11、数据输出到流中 flush():刷空输出流,并将缓冲区中的数据强制送出 close():关闭流大部分子类的命名是XxxOutputStream,例如FileOutputStream,DataOutputStreamOutputStream的派生类列表OutputStreamnByteArrayOutputStream 将字节数据写入输出流nFileOutputStream 写入文件输出流nFilterOutputStream 建立可过滤的输出流wBufferedOutputStream 缓冲输出流wDataOutputStream 将数据写入输出流nObjectOutputStream 将对象
12、数据类型写入输出流nPipedOutputStream 建立输出流管道连到输入流字符流在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这种流对于以16位的Unicode码表示的字符流处理很不方便。从JDK1.1开始, java.io包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类。同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组
13、。Reader和和Writer类是一切字符流的超类。它们封装的功能大致和InputStream,OutputStream一样,子类命名常为XxxReader,XxxWriter。字符流Reader的常用方法void close()void mark(int readAheadLimit)boolean markSupported() :int read() int read(char cbuf) int read(char cbuf, int off, int len) boolean ready() void reset() long skip(long n) 字符流Reader的派生类Bu
14、fferedReader 读取输入流到缓冲区CharArrayReader 读取输入流到内建字符数组FilterReader 过滤输入流的抽象类InputStreamReader 读取字节流并转为字符流PipedReader 建立输入流管到连接到输出流StringReader 建立数据源为字符串的输入流字符流Writer的常用方法void close() void flush() void write(char cbuf) void write(char cbuf, int off, int len) void write(int c) void write(String str) void
15、write(String str, int off, int len) 字符流Writer的派生类BufferdWriter 将字符数据写入缓将字符数据写入缓冲区冲区BufferdWriter 将将字符数据写入缓冲区字符数据写入缓冲区BufferdWriter 将字符数据写入缓将字符数据写入缓冲区冲区CharArrayWriter 将字符数据写入字将字符数据写入字符数组符数组CharArrayWriter 将将字符数据写入字符数组字符数据写入字符数组CharArrayWriter 将字符数据写入将字符数据写入字符数组字符数组FilterWriter 过滤输出流的抽象过滤输出流的抽象类类Filt
16、erWriter 过过滤输出流的抽象类滤输出流的抽象类FilterWriter 过滤输出流的抽过滤输出流的抽象类象类OutputStreamWriter 将字符流转化将字符流转化为字节流为字节流OutputStreamWriter 将字符流转化为字节流将字符流转化为字节流OutputStreamWriter 将字符流转化将字符流转化为字节流为字节流PipedWriter 建建立输出管道并连接立输出管道并连接到输入管道到输入管道PipedWriter 建立输建立输出管道并连接到输入管出管道并连接到输入管道道PipedWriter 建立输出管道并连接建立输出管道并连接到输入管道到输入管道字符流Wr
17、iter的派生类BufferdWriter 将字符数据写入缓冲区CharArrayWriter 将字符数据写入字符数组FilterWriter 过滤输出流的抽象类OutputStreamWriter 将字符流转化为字节流PipedWriter 建立输出管道并连接到输入管道PrintWriter 将格式化对象写入文本输出流StringWriter 建立终点为字符串的输出流8.5 文件类Filejava.io.File类对象提供如下功能: 1、表示一个文件或目录的路径名称。 2、可以获得文件的属性信息。 3、判断是否为目录或文件,是否存在等。 4、文件系统的遍历。 5、File类对象不提供文件内容
18、的操作。 File类的常用方法1public File(String path);/*如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。*/public File(String path,String name);/path是路径名,name是文件名public File(File dir,String name);/dir是路径名,name是文件名String getName( ); /得到一个文件的名称(不包括路径)String getPath( ); /得到一个文件的路径名String getAbsolutePath( );/
19、得到一个文件的绝对路径名String getParent( ); /得到一个文件的上一级目录名 String renameTo(File newName); /将当前文件名更名为给定文件的完整路径File类的常用方法2boolean exists( ); /测试当前File对象所指文件是否存在boolean canWrite( );/测试当前文件是否可写boolean canRead( );/测试当前文件是否可读boolean isFile( ); /测试当前文件是否是文件(不是目录)boolean isDirectory( )/测试当前文件是否是目录long lastModified( );
20、/得到文件最近被修改的时间long length( ); /得到文件的长度,以字节为单位boolean delete( ); /删除当前文件boolean mkdir( ); /根据当前对象生成一个由该对象指定的路径String list( ); /列出当前目录下的文件文件处理流类文件处理流类FileReader类是基于字符流的文件输入流类,常用构造类是基于字符流的文件输入流类,常用构造方法有:方法有: FileReader(String name)name为文件名;为文件名; FileReader(File file)file为文件类对象为文件类对象 FileWriter类是基于字符流的文件输出流类,常用构造方类是基于字符流的文件输出流类,常用构造方法有:法有: FileWriter(File file)file为文件类对象;为文件类对象; FileWriter(String name,boolean a)name为为文件名,文件名,a取真值则将数据添加在文件尾取真值则将数据添加在文件尾FileInputStream类是基于字节流的文件输入流类。类是基于字节流的文件输入流类。FileOutputStream是基于字节流的文件输出流类。是基于字节流的文件输出流类。举例【例【例8-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京人民艺术剧院第一次招聘8人考试备考试题及答案解析
- 2026年安阳市卫生行政系统事业单位人员招聘考试备考试题及答案详解
- 2026年白山市法院书记员招聘考试备考试题及答案详解
- 2026年沧州市城管协管人员招聘考试备考试题及答案详解
- 2026年德宏州农垦总局第二职工医院医护人员招聘笔试模拟试题及答案解析
- 2026广安安农发展集团有限公司第二批次招聘5人考试备考试题及答案解析
- 2026 增肌期糖醋鱼课件
- 2026年北海市税务系统事业单位人员招聘考试备考试题及答案详解
- 2026福建莆田市公安局上半年招聘警务辅助人员50人考试备考题库及答案解析
- 硬件工程师就业指导
- 以诺书-中英对照
- 高压清洗机安全操作规范及制度培训考试试题
- 牛津深圳版小学英语三年级下册全册教案
- 进出口来料加工手册
- “双减”背景下高中数学单元作业设计研究
- 防火建筑构造图集07J9051
- 钢结构答辩课件
- 外科无菌术及基本操作
- 2023年辽阳市太子河区数学六年级第二学期期末达标测试试题含解析
- 基数效用理论 序数效用理论 消费者选择
- 国际贸易实务题库(含答案)
评论
0/150
提交评论