还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
程序设计Java教学设计课程名称程序设计Java授语年级________________________________授课学期________________________________教师成名________________________________2023年07月10日
二、知识讲解
(一)字符流的结构字符流的作用Java提供了字符流用于操作字符(中文、英文、符号等)输入注Reader和Writer是字符流的基类
(二)字符流操作文件代表类FileReader和FileWriter FileReader作用用来从文件中读取字符的,操作文件的字符输入流演示案例读取文件中的内容(详见本章PPT)FileWriter作用用来将字符写入文件,操作文件字符输出流演示案例向文件中写入指定内容(详见本章PPT)特点如果指定的目标文件不存在,则先新建文件,再写入内容如果文件存在,会先清空文件内容,再写入新内容如果想在文件内容的末尾追加内容,需要调用构造方法FileWriter(String FileName,booleanappend)来创建文件输出流对象,将参数append指定为true
(三)字符流缓冲区代表类BufferedReader类和Buffered Writer类BufferedReader类用于对字符输入流进行包装Buffered Writer类用于对字符输出流进行包装演示案例使用字符缓冲流实现文件的拷贝(演示案例详见本章PPT)
(四)LineNumberReader作用跟踪行号的流演示案例实现在对文件做文件拷贝时为文件内容加上行号(详见本章PPT)
(五)转换流(详见本章)PPT作用转换流用于实现字节流和字符流的相互转换类InputStreamReader类和OutputStreamWriter类OutputStreamWriter类可以将一个字节输出流转换成字符输出流InputStreamReader类可以将一个字节输入流转换成字符输入流意义转换流的出现方便了对文件的读写,它在字符流与字节流之间架起了一座桥梁,使原本没有关联的两种流操作能够进行转化,提高了程序的灵活性演示案例使用转换流将源文件的内容输出到目标文件(详见本章PPT)
三、知识巩
(1)回顾上课前的学习目标,对本节课知识点进行总结
(2)使用第六章课后作业第四学时(其他流(上))IO顾上节课内容
(1)对上节课布置的任务以及学生提出的问题进行答疑解惑
(2)回顾上节课内容,引出本节课主题
(3)明确学习方向•掌握对象流的使用•了解数据流•了解打印流•掌握标准输入输出流的使用•了解管道流
二、知识讲解
(一)对象流对象序列化将内存中的对象转化为二进制数据流的形式输出,保存到硬盘,叫做对象的序列化接口如果一个类对象需要被序列化,则此类必须实现java.io.Serializable接口API•ObjectlnputStream(对象反序列化)()•writeObject ObjectOutputStream(对象序列化)()•readObject步骤创建一个对象输出流ObjectOutputStream,调用它的writeObject方法写入对象即可实现对象序列化操作创建一个对象输入流ObjectlnputStream,调用它的readObject方法读取对象即可实现对象反序列化操作演示案例实现Student类的序列化和反序列化(详见本章PPT)
(二)数据流API DatalnputStream类(基本数据类型序列化)•readUTF方法(指定输入编码)DataOutputStream类(基本数据类型反序列化)•writeUTF方法(指定输出编码)演示案例实现向文件中写入指定内容,并读取输出到控制台(详见本章PPT)读取数据的顺序要与存储数据的顺序保持一致,才能保证数据的正确
(三)打印流API PrintStream流•print方法•println方法演示案例详见本章PPT
(四)标准输入输出流弓I入System.out.printlnO;流对象常量常量功能错误输出public staticfinal PrintStreamerr系统输出public staticfinal PrintStreamout系统输入public staticfinal Inputstreamin err是将数据输出到控制台,通常是程序运行的错误信息,不希望用户看到out是标准输出流,默认将数据输出到命令行窗口,是希望用户看到的in是标准输入流,默认读取键盘输入的数据演示案例详见本章PPT重定向方法方法声明功能描述void setlnlnputStreamin对标准输入流重定向void setOutPrintStreamout对标准输出流重定向void setErrPrintStreamout对标准错误输出流重定向演示案例将源文件中的内容重定向到目标文件(详见本章PPT)
(五)管道流作用管道流主要用于连接两个线程间的通信API管道字节流•PipedlnputStream•PipedOutputStream管道字符流•PipedReader•PipedWriter演示案例实现客户端和服务端的通信(详见本章PPT,本案例使用了线程的知识,简单演示即可,可在学习下一章后让学生温习)
三、知识巩固•
(1)回顾上课前的学习目标,对本节课知识点进行总结
(2)使用第八章课后作业第五六课时(上机练习)〜
一、目标学生根据教材中的操作步骤和教师的演示进行上机练习,完成本章的上机任务,以及检查学生对相关知识点的掌握情况上机练习完成后将报告通过平台提交给老师
二、上机任务
1.实战训练10-1文件的加密解密(3分)
2.完成本章教学网站实验(2分)
三、教师评分教师根据学生对上机任务的完成度给予评分,满分为5分,并纳入平时成绩中习题教材第10章习题教学后记计划学课程名称第10章输入/输出流4+2学时时本章从File类的使用出发,介绍I/O流的概念,流的主要分类字节流和字符流,进而分别介绍如何使用字节流和字符流操作文件、读取文件和写入文件,最后介绍Java的内容分析I/O API中其他的流的使用培养学生使用Java中的I/O技术对数据进行处理【知识目标】
1.了解10的概念
2.了解文件分隔符
3.掌握File类的常用方法
4.了解字节流的结构教学目标
5.了解缓冲流
6.了解10流的API与
7.了解装饰者设计模式教学要求【技能目标】
1.熟练掌握File对象的创建和File类的用法
2.熟练掌握使用字小流操作文件
3.熟练掌握使用字符流操作文件
4.掌握使用字节流操作文件【思政育人目标】合法合规使用网络资源字节流操作文件、文件复制、字节流的缓冲区、字节缓冲流、字符流操作文件教学重点教学难点10的原理教学方式课堂讲解配合ppt演示5学时,上机演练3学时第一学时类、概述File IO教
一、提出需求,导入学习任务学1使用I/O数据持久化技术实现数据持久化•在变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会过丢失为了能够永久地保存程序创建的数据,需要将其保存到磁盘文件中,程这样就可以在其他程序中使用它们Java的1/0输入/输出技术可以将数据保存到文本文件和二进制文件中,以达到永久保存数据的要求2File类的意义进行I/O操作的基础是File类,File类的对象既可以表示一个特定的文件,又可以表示一个文件目录如果希望在程序中操作文件和目录,都需要通过File类来实现
(3)明确学习方向•了解文件分隔符•掌握File类对象的创建•掌握File类的常用方法•掌握遍历目录下文件的方法•掌握文件过滤器的使用
二、知识讲解
(一)类File文件分隔符和类对象的创建
1.File引入通过电脑的文件资源管理器展示操作系统中的文件分隔符如下图Chrome
①新建、U排序::\ProgramFiles\Google\Chrome|自文档名称_________________________________________
(1)文件分隔符(详见本章PPT)注意在Windows下的文件分隔符和Unix下的文件分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出uNo suchfile ordiretory的异常Unix系统的路径分隔符是Windows系统的路径分隔符是“\\(也支持)Unix系统中,不同路径之间使用分隔Windows7系统中,不同路径之间使用分隔注意Java中是转义字符,因此表示windows系统中的文件分隔符应使用File类提供的表示文件分隔符的常量字段声明字段描述static StringpathSeparator系统默认的路径分隔符,表示为字符串形式static charpathSeparatorChar系统默认的路径分隔符static Stringseparator系统默认的属性分隔符,表示为字符串形式static charseparatorChar系统默认的属性分隔符类的常用方法ZFile1引入通过文件的概念进行引入文件的概念文件可认为是相关记录或放在一起的数据的集合文件的存储位置硬盘、光盘、内存卡……Java程序如何访问文件类2File类操作文件的原理使用File的构造器引用物理文件/目录的路径创建File对象,并通过File对象的方法操作文件或目录的属性可参加本章PPT3File类的构造方法构造方法描述public FileString filename创建指定文件名的Rie对象,该文件与当前应用程序在同一目录中public FileStringdirectoryPath,String创建指定路径与指定文件名的File对象filenamepublic FileFiledirObj,Stringfilename创建指定文件目录路径和文件名的F加对象演示案例详见本章PPTFile类的常用方法方法名称说明boolean exists判断文件或目录是否存在boolean isFile判断是否是文件boolean isDirectory判断是否是目录String getPath返回此对象表示的文件的相对路径名String getAbsolutePath返回此对象表示的文件的绝对路径名String getName返回此对象表示的文件或目录的名称boolean delete删除此对象指定的文件或目录boolean createNewFile创建名称的空文件,不创建文件夹long length返回文件的长度,单位为字节,如果文件不存在,则返回0L演示案例详见本章PPT.遍历目录下的文件3File类中提供的list方法就是用来遍历目录下所有文件的传统方法使用for循环,实际工作中使用递归操作更常用演示案例需指定一个本地磁盘存在的目录详见本章PPT.文件过滤器4File类的list(FilenameFilter filter)方法一般是用来过滤返回文件列表的文件类型的演示案例详见本章PPT注意此处使用了“策略设计模式”创建了一个过滤器filter,在该过滤器中定义了“回调函数accept,用于指定过滤规则;当创建File对象时,调用list FilenameFilterfilter方法,将会回调FilenameFilter对象filter中的函数accept,从而实现该规则的过滤
(二)概述(详见本章)I/O PPT引入通过设问的方式进行引入图文结合,讲解流的概念流的概念流是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流流的作用通过流可以自由地控制文件、内存和IO设备数据的流向注意:I/O操作是一个相对的过程,一般情况下,要在程序(程序内存)的角度来思考程序运行需要使用到数据,将数据流入到程序中,对程序而言是输程序运行会保存数据,将数据传递到外部的空间,对程序而言是输如下图所示I/O流分类:输出流O Outputstream和Writer作为基类输入流o按流向区分Inputstream和Reader作为基类xmZnl注输入输出流是相对于计算机内存来说的字丹诗字节输入流基类Inputstream/改?输出流出类H Outputstream按照处理数据单兀划分」李舛、在字符输入流基类Reader(字符输出流「基类5^3Write注字节流是8位通用字节流,字符流是16位Unicode字符流进行I/O操作的步骤
①创建源或者目标对象
②创建10流对象
③具体的10操作
④关闭资源注意无论使用哪种流来操作数据,都需要使用close方法来关闭操作的资源如果不关闭资源,那么磁盘的文件就会一直被程序引用,既不能修改,也不能删除
三、知识巩
(1)回顾上课前的学习目标,对本节课知识点进行总结
(2)使用第八章课后作业第二学时(字节流)顾上节课内容□1对上节课布置的任务以及学生提出的问题进行答疑解惑2回顾上节课内容,引出本节课主题3明确学习方向•了解字节流的结构•掌握字节流操作文件的方法•掌握使用字节流实现文件的复制*•了解字节流的缓冲区•了解装饰者设计模式掌握字节缓冲流的使用
二、知识讲解一字节流的结构字节流的特点字节流的处理单位是字节,通常用来处理二进制文件所有的文件都能以二进制字节形式存在字节流的结构:输入:ObjectlnputStrcamI FilelnputStreamLineNumberlnputStream[PipedlnputStream JDatalnputStreamFilterlnputStream\Buffered InputStreamflnputStream/ByteArraylnputSlream\PushbacklnputStreamSequencelnputStream;StringBuffcrlnputStrcamJ1输出:{FileOutputStreamObjectOutputStream PipedOutputStream;DataOutputStream]\:OutputStream/FilterOutputStreamBufferedOutputStream JBytcArrayOutputStrcamj:PushbackOutputStream;注InputStream和OutputStream是字节流的基类二字节流操作文件字节输入流InputStream的子类,都以uInputStreamv为后缀方法声明功能描述int available返回输入流的字节数长度和大小.void close关闭此输入流并释放与该流关联的所有系统资源void markint readlimit标入流中当前的位置boolean markSupported测试此输入流是否支持mark和reset方法long skiplongn跳过和丢弃此输入流中数据的n个字节intread从输入流中读取数据的下一个字节int readbyte[]b从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,返回读取的字节数int readbyte[]b,int off,int len将输入流中最多len个数据字节读入byte数组void reset将此流重新定位到最后一次对此输入流调用mark方法时的位置演示案例使用InputStream中的readbyte[]b,int off,int len方法读取文件详见本章PPT字节输出流OutputStream的子类,都以uoutputstreamv为后缀void dose关闭此输出流并释放与此流有关的所有系统资源void flushQ刷新此输出流并强制写出所有缓冲的输出字节void writebyte[]b将b.length个字节从指定的byte数组写入此输出流void writeintb将指定的字节写入此输出流void writebyte[]b,int offint len将指定byte数组中从偏移量ff开始的len个字节写入此输出流演示案例:使用outputstream中的read(byte[]b,int off,int len)方法读取文件(程序是先将之前的内容清除掉,然后进行写入,如果想不清除文件内容,可以使用FileOutputStream类的构造方法FileOutputStream(String FileName,boolean append)来创建文件输出流对象,指定参数叩pend为true)
(三)文件的复制文件拷贝是常见的字节输入流和输出流结合使用的情况演示案例使用方法实现图片的复制(将项目文件夹下的read src文件拷贝到文件夹)test.jpg tar
(四)字节流的缓冲区方法的缺点拷贝文件的方式是一个字节一个字节地拷贝,频繁read操作文件,效率非常低优化利用字节流的缓冲区可以解决这一问题优化案例使用()方法实现图片的复制read byte[]b
(五)装饰器设计模式概念装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能它是通过创建一个包装对象(装饰对象)包裹真实的对象要求装饰对象和被装饰对象要实现同一个接口,装饰对象持有被装饰对象的实例图例〈接口〉Sourceable//\method/\/\Source DecoratorinethodmethodSource类和Decorator类都实现了Sourceable接口,Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态地添加一些功能演示案例实现图例所示的装饰者设计模式(详见本章PPT)
(六)字节缓冲流代表类BufferedlnputStream类和BufferedOutputStream类特点字节缓冲流使用了装饰者设计模式构造方法中分别接收InputStream和OutputStream类型的参数作为被装饰对象,在执行读写操作时提供缓冲功能图例输入流4_一缓冲流文件节点流程序缓冲流注在节点流之外,封装着一层缓冲流,它是对一个已存在的流的连接和封装演示案例使用字节缓冲流实现文件的拷贝(详见本章PPT)
三、知识巩固
(1)回顾上课前的学习目标,对本节课知识点进行总结
(2)使用第八章课后作业第三学时(字符流)
(1)对上节课布置的任务以及学生提出的问题进行答疑解惑
(2)回顾上节课内容,引出本节课主题
(3)明确学习方向•掌握Map接口的常用方法•掌握HashMap集合的使用•了解LinkedHashMap类•了解Properties类的使用。