教案课程名称《Web系统开发》授课教师黄潇教学题目3学时第2章Java输入输出流技术教学时数1.Java流式输入输出的基本原理2.输入输出流的分类教学内容3.节点流类、处理流类4.对象序列化1.知识目标:掌握I/O流的分类和体系结构。理解Java中不同类型的输入输出流及其使用场景。熟悉随机访问文件类的概念和使用方法。熟悉对象序列化和反序列化的实现。2.能力目标:教学目标熟练运用Java输入输出流技术实现文件的读写操作。应用随机访问文件类读取文件任意位置数据。培养学生的实践能力和解决问题的能力。3.情感目标:强调信息安全与数据保护的重要性,培养学生的信息安全意识。通过课堂实践,让同学们能够做到举一反三,具有解决问题的能力和严谨的软件工匠精神。教学重点Java输入输出流的应用。教学难点对象序列化。教学课型团理论课口实验课授课手段多媒体教学授课方法讲授法+演示法+练习法专业术语InputStream,OutputStream,ObjectlnputStream,ObjectOutStream,Serializable1.梁永先、陈滢生、尹校军,JavaWeb程序设计(慕课版)第2版,人民邮电出版社,2021.3参考资料2.汪诚波,JavaWeb开发技术与实践,清华大学出版社,2018.93.千锋教育高教产品研发部,JavaWeb开发实战,清华大学出版社,2018.111.完成一个简单的文件复制程序,使用Java输入输出流技术实现文件的读写操作。课后作业2.显示指定目录下所有的.jpg文件。教学后记
教 案 课程名称 《Web 系统开发》 授课教师 黄 潇 教学题目 第 2 章 Java 输入输出流技术 教学时数 3 学时 教学内容 1. Java 流式输入输出的基本原理 2. 输入输出流的分类 3. 节点流类、处理流类 4. 对象序列化 教学目标 1. 知识目标: 掌握 I/O 流的分类和体系结构。 理解 Java 中不同类型的输入输出流及其使用场景。 熟悉随机访问文件类的概念和使用方法。 熟悉对象序列化和反序列化的实现。 2. 能力目标: 熟练运用 Java 输入输出流技术实现文件的读写操作。 应用随机访问文件类读取文件任意位置数据。 培养学生的实践能力和解决问题的能力。 3. 情感目标: 强调信息安全与数据保护的重要性,培养学生的信息安全意识。 通过课堂实践,让同学们能够做到举一反三,具有解决问题的能力和严谨的软件工 匠精神。 教学重点 Java 输入输出流的应用。 教学难点 对象序列化。 教学课型 理论课 实验课 授课手段 多媒体教学 授课方法 讲授法 + 演示法 + 练习法 专业术语 InputStream,OutputStream,ObjectInputStream,ObjectOutStream,Serializable 参考资料 1. 梁永先、陈滢生、尹校军,Java Web 程序设计(慕课版)第 2 版,人民邮电出版社, 2021.3 2. 汪诚波,Java Web 开发技术与实践, 清华大学出版社,2018.9 3. 千锋教育高教产品研发部,Java Web 开发实战,清华大学出版社,2018.11 课后作业 1. 完成一个简单的文件复制程序,使用 Java 输入输出流技术实现文件的读写操作。 2. 显示指定目录下所有的.jpg 文件。 教学后记 学生的出勤及纪律都比较好,教学基本能按事先设计的思路进行,课堂气氛也比较活跃。 通过在课堂上对学生的提问和学生的回答上发现大多数学生对 Java 的基础知识掌握得 还可以,但也有些学生掌握得不够扎实,有些遗忘,因此在理解和接收这次讲课内容上 有点跟不上
引入新课教学设计:通过提出问题,启发学生思考解决办法,从而激发学生对本讲所学知识的兴趣。Java是面向对象的程序设计语言,与面向过程的程序设计语言相比较,更接近于人教学组织的自然思维。引导学生查找资料,阅读书本,提前了解字符流在I/O流中的重要地位,过程 1带领学生进入I/O流入门的课堂,让学生对本门课程的学习充满期待。(3分钟)在实际开发过程中,许多程序都需要和外界进行信息交互,比如从文件中读取数据或者是向文件中写入数据、从键盘读取数据、将数据输出至打印机中等。Java语言提供了特有的输入/输出的功能,即以流的形式处理输入/输出数据操作。【思考】如何实现学生基本信息数据的导入导出?本讲主要内容教学设计:引导学生认真听讲,通过本堂课的学习学生能够收获:初步了解I/O流的分类和体系结构,字节流如何实现对文件信息的写入和读取:了解什么是字节字符输入流,什么是字节字符输出流。2.1Java流式输入输出原理在Java程序中,对于数据的输入输出操作以“流”(Stream)方式进行。J2SDK提供了各种各样的“流”类,用以获取不同种类的数据。程序中通过标准的方法输入或输出数据。什么是流?流是内存与存储设备之间传输数据的通道。传辅水的管道相当于流在此过程中,以家庭为参照物:教学组织水相当于数据生活用水>家庭中:流入过程3家庭房水下水道:流出(10 分钟)2.2输入输出流的分类J2SDK所提供的所有流类型位于java.io包,其中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度对其进行分类:1.按方向:输入流:将<存储设备>中的内容读入到<内存>中。AstreamreadsSource程序输出流:将<内存>中的内容写入到<存储设备>中。Astreamwrites程序dest2.按单位:
教学组织 过程 1 (3 分钟) 引入新课 教学设计: 通过提出问题,启发学生思考解决办法,从而激发学生对本讲所学知识的兴趣。 Java 是面向对象的程序设计语言,与面向过程的程序设计语言相比较,更接近于人 的自然思维。引导学生查找资料,阅读书本,提前了解字符流在 I/O 流中的重要地位, 带领学生进入 I/O 流入门的课堂,让学生对本门课程的学习充满期待。 在实际开发过程中,许多程序都需要和外界进行信息交互,比如从文件中读取数据 或者是向文件中写入数据、从键盘读取数据、将数据输出至打印机中等。Java 语言提供 了特有的输入/输出的功能,即以流的形式处理输入/输出数据操作。 【思考】如何实现学生基本信息数据的导入导出? 教学组织 过程 3 (10 分钟) 本讲主要内容 教学设计: 引导学生认真听讲,通过本堂课的学习学生能够收获:初步了解 I/O 流的分类和体 系结构,字节流如何实现对文件信息的写入和读取;了解什么是字节字符输入流,什么 是字节字符输出流。 2.1 Java 流式输入输出原理 在 Java 程序中,对于数据的输入输出操作以“流”(Stream)方式进行。 J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据。程序中通过标准的 方法输入或输出数据。 什么是流?流是内存与存储设备之间传输数据的通道。 2.2 输入输出流的分类 J2SDK 所提供的所有流类型位于 java.io 包,其中定义了多个流类型(类或抽象类) 来实现输入/输出功能;可以从不同的角度对其进行分类: 1. 按方向: 输入流:将<存储设备>中的内容读入到<内存>中。 输出流:将<内存>中的内容写入到<存储设备>中。 2. 按单位:
字节流:以字节为单位,可以读写所有数据。字符流:以字符为单位,只能读写文本数据。3.按功能:节点流:具有实际传输数据的读写功能,是可以从一个特定的数据源(节点)读写数据(如:文件,内存等)。节点流程序数据源处理流:在节点流(或处理流)的基础之上提供更为强大的读写功能。程序数据源处理流包java.io内的所有流类位于都分别继承自以下四种抽象流类型:字节流字符流输入流InputStreamReader输出流OutputStreamWriter4.字节流CnputStreamOutputStreamPushbackInputStreamFilelnputStreamFileOutputStreamDataOutputStreamDatalnputStreamPipedIntputStreamBufferedOutputStreamPipeOutputStreamBufferedInputStreamFilterInputStreamFilterOutputStreamPrintStreamLineNumberInputStreanByteArrayInputStreamByteArrayOutputStreamSequencedinputStreamObjectOutputStreamStringBufferlnputStreanObjectInputStream(1)InputStream的基本方法::intreadOthrowsIOException//读取一个字节并以整数的形式返回(0~255),如果返回-1已到输入流的末尾:intread(byteb)//返回值为实际读取的字节的数量,如果读取前已到输入流的末尾则返回-1. int read(byte b[ ], int off, int len)·voidclose();//关闭流释放内存资源//跳过n个字节不读,返回值为实际跳过的字节数量: long skip(long n)(2)OutputStream的基本方法:·voidwriteintb)throwsIOException//向输出流中写一个字节数据,该数据为参数b的低8位.void write(byte b[D). void write(byte b[ ], int off, int len)·void close()·voidflush()//刷新此输出流并强制写出所有缓冲的输出字节,由于某些流支持缓存功能,经常在closeO)前使用
字节流:以字节为单位,可以读写所有数据。 字符流:以字符为单位,只能读写文本数据。 3. 按功能: 节点流:具有实际传输数据的读写功能,是可以从一个特定的数据源(节点)读写 数据(如:文件,内存等)。 处理流:在节点流(或处理流)的基础之上提供更为强大的读写功能。 包 java.io 内的所有流类位于都分别继承自以下四种抽象流类型: 4. 字节流 (1)InputStream 的基本方法: int read() throws IOException //读取一个字节并以整数的形式返回(0~255),如 果返回-1 已到输入流的末尾 int read(byte b[]) //返回值为实际读取的字节的数量,如果读取前已到输入流的末 尾则返回-1 int read(byte b[ ], int off, int len) void close( ); //关闭流释放内存资源 long skip(long n) //跳过 n 个字节不读,返回值为实际跳过的字节数量 (2)OutputStream 的基本方法: void write(int b) throws IOException//向输出流中写一个字节数据,该数据为参数 b 的低 8 位 void write(byte b[ ]) void write(byte b[ ], int off, int len) void close() void flush( ) //刷新此输出流并强制写出所有缓冲的输出字节,由于某些流支持缓 存功能,经常在 close()前使用
5.字符流ReaderWriterBufferedReaderLineNumberReaderBufferedWriterCharArrayReaderCharArrayWriterInputStreamReaderFileReaderOutputStreamWriterFileWriterFilterReaderPushbackReaderFilterWriterPipedReaderPipedWriterStringReaderStringWriter教学设计:首先介绍文件类File,并以实例演示讲解File类的应用:然后再讲解以文件为数据宿进行文件传输的各种文件流类及应用。思政元素:结合信息安全和数据保护的案例,让学生认识到正确处理输入输出流对于保护信息安全的重要性。2.3节点流类【提问】什么是文件?文件一般存储在哪里?文件可认为是相关记录或放在一起的数据的集合。2.3.1File类java.io.File,文件或目录类。1.构造方法:·File(Stringpathname)//以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储:File(Stringparent, String child).File(File parent, String child)教学组织2.常量(static类型):过程4当前系统的目录分割符.separator、separatorChar(30分钟)·pathSeparator、pathSeparatorChar路径分隔符3.通过File对象可以访问文件的属性(请参考API文档)4.通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)::booleancreateNewFileO)throwsIOException:boolean deleteo): boolean mkdir()·booleanmkdirsO/创建在路径中的一系列目录例:TestFile.javaimportjava.io.*.public class TestFilepublic static void main(Stringargs[l)String separator=File.separator,String filename="myfile.txt";String directory="mydirl"+separator+"mydir2";File f=new File(directory, filename),if(f.existsO)System.out.println("文件名:"+f.getAbsolutePath()System.out.println("文件大小:"+f.lengtho)
5. 字符流 教学组织 过程 4 (30 分钟) 教学设计: 首先介绍文件类 File,并以实例演示讲解 File 类的应用;然后再讲解以文件为数据 宿进行文件传输的各种文件流类及应用。 思政元素:结合信息安全和数据保护的案例,让学生认识到正确处理输入输出流对 于保护信息安全的重要性。 2.3 节点流类 【提问】什么是文件?文件一般存储在哪里? 文件可认为是相关记录或放在一起的数据的集合。 2.3.1 File 类 java.io.File,文件或目录类。 1. 构造方法: File(String pathname) //以 pathname 为路径创建 File 对象,如果 pathname 是相对路 径,则默认的当前路径在系统属性 user.dir 中存储 File(String parent, String child) File(File parent, String child) 2. 常量(static 类型): separator、separatorChar 当前系统的目录分割符 pathSeparator、pathSeparatorChar 路径分隔符 3. 通过 File 对象可以访问文件的属性(请参考 API 文档) 4. 通过 File 对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下): boolean createNewFile() throws IOException boolean delete() boolean mkdir() boolean mkdirs() //创建在路径中的一系列目录 例:TestFile.java import java.io.*; public class TestFile { public static void main(String args[]) { String separator = File.separator; String filename = "myfile.txt"; String directory = "mydir1" + separator + "mydir2"; File f = new File(directory, filename); if(f.exists()) { System.out.println("文件名:" + f.getAbsolutePath()); System.out.println("文件大小:" + f.length() );
lelsef.getParentFileO.mkdirsO;try!f.createNewFileO,1catch(IOExceptione)e.printStackTraceO,【提问】Java程序如何访问文件?文件夹回文件,txtHelloWorldjava2.3.2FilelnputStream和FileOutputStream1.构造方法.FilelnputStream(String name)·FilelnputStream(File fileObi):FileOutputStream(String name):FileOutputStream(FilefileObi):FileOutputStream(FilefileObj,booleanappend)throwsFileNotFoundException常用方法:支持其父类所提供的数据读写方法。使用FilelnputStream读文本文件的基本步骤:importjava.io.lOException;引入相关的类importjava.io.FilelnputStream;FilelnputStreamfis=new购造文件输入流cilelntputStreFilelnputStream("c:lltest.txt");fis.available();读取文本文件的效据fis.read();口关闭文件流对象fis.close();【示例】:顺序读取文件名为参数所指示文件里的内容,并显示在控制台上面,直到文件结束为止。并统计所读取字节数。import java.io.*,publicclassTestFilelnputStreampublicstaticvoidmain(Stringargs)intb=0
} else { f.getParentFile().mkdirs(); try { f.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } } } 【提问】Java 程序如何访问文件? 2.3.2 FileInputStream 和 FileOutputStream 1. 构造方法 FileInputStream(String name) FileInputStream(File fileObj) FileOutputStream(String name) FileOutputStream(File fileObj) FileOutputStream(File fileObj, boolean append) throws FileNotFoundException 常用方法:支持其父类所提供的数据读写方法。 使用 FileInputStream 读文本文件的基本步骤: 【示例】:顺序读取文件名为参数所指示文件里的内容,并显示在控制台上面,直 到文件结束为止。并统计所读取字节数。 import java.io.*; public class TestFileInputStream { public static void main(String[] args){ int b = 0;