ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:33.95KB ,
资源ID:10464604      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10464604.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《输入输出和反射》教案.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

《输入输出和反射》教案.docx

1、输入输出和反射教案输入输出和反射 教案第三章 本章题目1 . 回顾上一章:10分钟.3402 . 课程知识点讲解.340 2.1.具体知识点1:XX分钟.340 2.2.具体知识点2.:XX分钟340 2.3.具体知识点3:XX分钟.3413 . 本章总结 10分钟.3414 . 考核点.3415 . 扩展部分.3416 . 学员问题汇总.3417 . 作业.341 授课教师:XXX课时:2小时本章主要目的 XXX本章重点 XXX本章难点 XXX1 、预习检查:X分钟 什么是流? 简述使用字节流读文本文件的步骤 使用什么流读写字符内容更高效? 2 、课程知识讲解: 2.1 具体知识点1:Fil

2、e类 30分钟 什么是文件? 文件可认为是相关记录或放在一起的数据的集合 文件一般存储在哪里?磁盘,硬盘 软盘 U盘等 JAVA程序如何访问文件属性? JAVA API :java.io.File 类 操作文件或目录的属性 老师提问 问题:File类是如何操作文件或目录的属性? File类访问文件属性 a.通过File类,创建File对象 File file = new File( String pathname ); pathname文件在磁盘中的目录b.通过文件对象的方法操作文件或目录属性 注意:文件路径中的分隔符可以是正斜杠 / 也可以是反斜杠 ,但是反斜杠必须是 File.separa

3、tor 与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 /;在 Microsoft Windows 系统上,它为 。File类的常用方法:(参考API) 通过案例讲解集中常用的方法/boolean delete( ) 删除此对象指定的文件或目录 /boolean createNewFile( ) 创建名称的空文件不创建文件夹,如果已经存在就不能建 /获取文件的名字 System.out.println(文件的名字:+file.getName(); System.out.println(文件的相对路径:+

4、file1.getPath(); /获取绝对路径 System.out.println(绝对路径:+file.getAbsolutePath(); /获得文件最后修改的时间 Calendar c=Calendar.getInstance(); c.setTimeInMillis(file.lastModified(); Date date=c.getTime(); SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); System.out.println(文件最后修改的时间:+sdf.format(date); /获得文

5、件的大小 System.out.println(文件的大小:+file.length()+Kb);老师提问 问题: 如何读写文件? 分析:java中的File类只能操作文件或目录的属性,不能操作文件里面的数据。读文件:是指把文件中的数据读取到内存中。写文件:就是把内存中的数据写入到文件中。在java中是通过流来读写文件的。 2.2 具体知识点2:流 XX分钟 知识点讲解1:流的定义 通过流来读写文件 流是指一连串流动的字符,是以先进先出方式发送信息的通道 用生活中的例子(比如水管流水)知识点讲解2:流的分类 流分为输入流和输出流。输入输出是相对计算机内存说的,如果数据是输入到内存,则称为输入流

6、,如果是从内存中输出,则称为输出流。 数据源与流的关系:数据源分为源数据源和目标数据源 输入流联系的是源数据源 ,输出流联系的是目标数据源。 详见PPT12 PPT13 知识点讲解:文件的读写 文本文件的读写 用FileInputStream和FileOutputStream读写文本文件 用BufferedReader和BufferedWriter读写文本文件 二进制文件的读写 使用DataInputStream和DataOutputStream读写二进制文件 (和文本文件的读写类似不详细的讲解) 使用FileInputStream 读文本文件的步骤是什么? (对照API讲解FileInput

7、Stream的方法)FileInputStream就是将文件中的数据输入到内存中,它是InputStream抽象类的子类,用来读取文件中的数据。1 引入相关的类 (相关的jar包) 构造文件输入创建流FileInputStream 对象 FileInputStream fis= new FileInputStream(text.txt); 读取文本文件的数据 fis.available(); /获得文件的字节数fis.read(); 关闭文件流对象 fis.close(); 案例讲解:public static void main(String args) throws Exception F

8、ile file=new File(D:test.txt); FileInputStream fis=new FileInputStream(file); /2步 System.out.println(可读取的字节数:+fis.available(); System.out.println(文件内容是:); int date; while(date=fis.read()!=-1) /3步 /强制类型转换 如果不强转 那么就是对呀的ASCII码 System.out.println(char)date+ ); fis.close();或者public static void main(Strin

9、g args) throws Exception File file=new File(D:test.txt); FileInputStream fis=new FileInputStream(file);/2 System.out.println(可读取的字节数:+fis.available(); System.out.println(文件内容是:); byte buffer=new bytefis.available();/创建合适文件大小的数组 fis.read(buffer); /读取文件中的内容到b数组 fis.close(); /String构造 通过使用指定的 charset 解

10、码指定的 byte 数组,构造一个新的 String。 System.out.println(new String(buffer); 使用FileOutputStream 写文本文件的步骤是什么?与读文件的步骤有何不同?FileOutputStream就是将内存中的数据输出到文件中,它是FileOutputStream抽象类的子类,把内存的数据写入到文本文件中。2 引入相关的类 (相关的jar包) 构造文件输出创建流FileInputStream 对象 FileOutputStream fos = new FileOutputStream(“text.txt); 把数据写入文本文件 Strin

11、g str =好好学习Java; byte words = str.getBytes(); fos.write(words, 0, words.length); 关闭文件流对象 fos.close(); 案例:public static void main(String args) throws Exception /创建输出流对象 FileOutputStream fos=new FileOutputStream(d:123.txt,true); /把数据写入文本文件 String str=asdasdasfewfwe; byte b=str.getBytes(); fos.write(b)

12、; fos.flush();/刷新 fos.close();/关闭流 System.out.println(数据写入完成!); 注意:FileOutputStream (File file) 和 FileOutputStream(String name) 两种构造方法在向文件写数据时将覆盖文件中原有的内容,如果是不覆盖原来的内容,直接写在原来的文件内容的后面就需要用到第三种方法FileOutputStream(String name,boolean append) true表示不覆盖 创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件案例:复制一个文件

13、的内容到另外一个文件public static void main(String args) throws Exception /创建输入流对象对文件进行读取 FileInputStream fis=new FileInputStream(D:student.txt); /创建输出流对象,将读取到的文件写入到另外的文件中 FileOutputStream fos=new FileOutputStream(E:studentcopy.txt); /创建中转的数组,将读取的信息存到数组中 byte buffer=new byte1024; /循环读取数据,并写入到文件中 / read()下一个数据

14、字节;如果已到达文件末尾,则返回 -1。 System.out.println(开始赋值.); while(fis.read()!=-1) fis.read(buffer); fos.write(buffer); fos.flush(); fos.close(); fis.close(); System.out.println(复制结束.); 用 字符流类BufferedReader和Reader 读文本文件 (结合API帮助文档讲解) BufferedReader和Reader都是Reader抽象类的子类,他们可以通过字符流的方式读取文件,并且使用缓冲区(它可以先把一批数据读到缓冲区,接下来

15、的读操作都是从缓冲区内获取数据,避免每次都从数据源读取数据进行字符编码转换,从而提高读取操作的效率),提高了文件读取的效率。按行读取内容的readLine()方法 一行一行的读取。步骤和FileInputStream类似 Reader in = null; BufferedReader bf = null; try in = new FileReader(D:test.txt); bf = new BufferedReader(in); / 读取有一行数据 String line = bf.readLine(); while (line != null) System.out.println(

16、line); line = bf.readLine(); catch (Exception e) e.printStackTrace(); finally /关闭流 try if (bf != null) bf.close(); if (in != null) in.close(); catch (IOException e) e.printStackTrace(); 用 字符流类BufferedWriter和Writer写文本文件 (结合API帮助文档讲解) 将内存中的数据写入到文本文件中。BufferedWriter带有缓冲区。BufferedWriter类的缓冲区(BufferedWri

17、ter与BufferedReader的流方向正好相反,BufferedWriter是把一批数据写到缓冲区,当缓冲区满的时候,再把缓冲区的数据写到字符输出流中。这可以避免每次都执行物理写操作,从而提高io操作的效率。 bw.newLine();/写入一个行分隔符。 换行 bw.write(str); / 写数据案例:public static void main(String args) /创建writer对象 Writer writer=null; /创建BufferWriter对象 BufferedWriter bw=null; String str=好好学习,天天向上!; try writ

18、er=new FileWriter(D:234.txt,true); bw=new BufferedWriter(writer); bw.newLine(); /写入一个行分隔符。 bw.write(str); bw.flush();/刷新缓冲区 catch (IOException e) /关闭流 e.printStackTrace(); finally try if (writer!=null) /判断流是否是空 writer.close(); if (bw!=null) bw.close(); catch (IOException e) e.printStackTrace(); Syst

19、em.out.println(数据写入完成!); 老师提问: 问题1:读取包含中文的文本文件时,可能出现中文乱码,怎么办? 分析:java为我们提供了一个类:InputStreamReader,继承Reader类,使用InputStreamReader并设置编码格式(演示乱码出现的过程和解决方案)public static void main(String args) throws Exception File file=new File(D:1234.txt); FileInputStream fis=new FileInputStream(file); /使用InputStreamRead

20、er并设置编码格式 InputStreamReader isr=new InputStreamReader(fis); BufferedReader br=new BufferedReader(isr); String line=br.readLine(); while(line!=null) System.out.println(line); line=br.readLine(); br.close(); isr.close(); fis.close(); 案例:使用BufferedReader和BufferedWriter实现文件的拷贝public static void main(Str

21、ing args) throws Exception / 创建FileReader对象 FileReader fr = null; / 创建bufferedReader对象 BufferedReader br = null; / 创建FileWriter对象 FileWriter fw = null; / 创建BufferedWriter对象 BufferedWriter bw = null; try fr = new FileReader(D:123.txt); br = new BufferedReader(fr); fw = new FileWriter(E:copy.txt); bw

22、= new BufferedWriter(fw); System.out.print(开始复制文件); String line = null; while (line = br.readLine() != null) System.out.print(.); bw.write(line); bw.newLine(); bw.flush(); System.out.println(); System.out.println(文件复制完成.); catch (Exception e) e.printStackTrace(); finally if (bw != null) bw.close();

23、if (fw != null) fw.close(); if (br != null) br.close(); if (bw != null) bw.close(); 2.3 具体知识点3:序列化和反序列化20分钟 为什么要使用序列化和反序列化?(举例讲解)当两个进程在进行远程通信时(QQ通讯),彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。序列化:就是将对象的状态存储到特定存储介质中的过程,也就是将对象状态转换为可保持或传输格式的过程,在序列化过程中,会将对象的公

24、有成员、私有成员包括类名,转换为字节流,然后再把自己流写入数据流,存储到介质中,这里说的介质就是指文件。反序列化:顾名思义就是与序列化相反,反序列化就是从特定的存储介质中讲数据重新构建对象的过程。(也就是将序列化的对象还原)知识讲解1:序列化的步骤:(四步)1 需要序列化的类实现Serializable接口 2 创建对象输出流 FileOutputStream os=newFileOutputStream(f);/ObjectOutputStream核心类 ObjectOutputStream oos=newObjectOutputStream(os);3 调用writeObject()方法将

25、对象写入文件 4 关闭对象输出流 案例public static void main(String args) throws Exception /实例化User对象 User user=new User(张三,26,java12); /创建对象输出流 FileOutputStream fos=new FileOutputStream(D:user.txt); ObjectOutputStream oos=new ObjectOutputStream(fos); /用输出流的writer()方法将对象写入文件 oos.writeObject(user); oos.close(); fos.cl

26、ose(); System.out.println(序列化完毕!); 注意:可以使用集合保存对象,然后将集合中所有的对象进行序列化知识讲解2:反序列化的步骤:(四步)1 需要序列化的类实现Serializable接口 2 创建对象输入流 InputStream is=newFileInputStream(f);/ObjectOutputStream核心类 ObjectInputStream ois=newObjectInputStream(is);3 调用readObject ()方法读取对象 4 关闭对象输出流 案例:public static void main(String args)

27、throws Exception /创建对象输入流 FileInputStream fis=new FileInputStream(D:user.txt); ObjectInputStream ois=new ObjectInputStream(fis); /调用readObject ()方法读取对象 返回值是objec类型,要强转 User user=(User)ois.readObject(); /关闭流 ois.close(); fis.close(); System.out.println(user.getName()+t+user.getAge()+t+user.getClazz(); /反序列化list集合 返回值是objec类型,要强转FileInputStream fis=new FileInputStream(D:users.txt); ObjectInputStream ois=new ObjectInputStrea

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2