java视频2第九章-io流_第1页
java视频2第九章-io流_第2页
java视频2第九章-io流_第3页
java视频2第九章-io流_第4页
java视频2第九章-io流_第5页
免费预览已结束,剩余54页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 API-IO传智风清扬本章内容北京传智播客教育 异常File递归字节流转换流字符流其他流异常概述异常:异常就是Java程序在运行过程中出现的错误。异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。我们见过的异常,角标越界异常,空指针异常北京传智播客教育 异常分类异常分类图解北京传智播客教育 ThrowableErrorException子类子类RuntimeException子类异常举例除数为0数组访问越界北京传智播客教育 JVM的默认处理方案把异常的名称,错误原因及异常出现的位置

2、等信息输出在了控制台程序停止执行北京传智播客教育 异常处理方案异常处理方案trycatchfinallythrows北京传智播客教育 trycatch处理方式一个异常的情况多个异常的情况平级情况存在上下级的情况JDK7的新特性及注意事项北京传智播客教育 编译时异常和运行时异常的区别Java中的异常被分为两大类:编译时异常和运行时异常。所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常编译时异常Java程序必须显示处理,否则程序就会发生错误,无法通过编译运行时异常无需显示处理,也可以和编译时异常一样处理北京传智播客教育 Throwable中的方法ge

3、tMessage()获取异常信息,返回字符串。toString()获取异常类名和异常信息,返回字符串。printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。printStackTrace(PrintStreams)通常用该方法将异常内容保存在日志文件中,以便查阅。 北京传智播客教育 throws定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。举例分别演示编译时异常和运行时异常的抛出北京传智播客教育 throw在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。举例

4、分别演示编译时异常对象和运行时异常对象的抛出北京传智播客教育 throws和throw的区别throws用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,并不一定会发生这些异常throw用在方法体内,跟的是异常对象名只能抛出一个异常对象名表示抛出异常,由方法体内的语句处理throw则是抛出了异常,执行throw则一定抛出了某种异常 北京传智播客教育 我们到底该如何处理异常呢原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throw区别:后续程序需要继续运行就try后续程序不需

5、要继续运行就throws举例:感冒了就自己吃点药就好了,try吃了好几天药都没好结果得了H7N9,那就的得throw到医院如果医院没有特效药就变成Error了北京传智播客教育 finally的特点作用及面试题finally的特点被finally控制的语句体一定会执行特殊情况:在执行到finally之前jvm退出了(比如System.exit(0)finally的作用用于释放资源,在IO流操作和数据库操作中会见到finally相关的面试题final,finally和finalize的区别如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是r

6、eturn后。北京传智播客教育 自定义异常考试成绩必须在0-100之间很明显java没有对应的异常,需要我们自己来做一个异常自定义异常继承自Exception继承自RuntimeException北京传智播客教育 异常注意事项子类覆盖父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)如果父类抛出了多个异常,子类覆盖父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常如果被覆盖的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws北京传智播客教育 File类概述和构造方法File

7、类的概述文件和目录路径名的抽象表示形式构造方法public File(String pathname)public File(String parent,String child)public File(File parent,String child)北京传智播客教育 File类的成员方法创建功能public boolean createNewFile()public boolean mkdir()public boolean mkdirs()删除功能public boolean delete()重命名功能public boolean renameTo(File dest)北京传智播客教育

8、File类的成员方法判断功能public boolean isDirectory()public boolean isFile()public boolean exists()public boolean canRead()public boolean canWrite()public boolean isHidden()北京传智播客教育 File类的成员方法基本获取功能public String getAbsolutePath()public String getPath()public String getName()public long length()public long last

9、Modified()高级获取功能public String list()public File listFiles()北京传智播客教育 File类练习判断D盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称文件名称过滤器的实现思想及代码public String list(FilenameFilter filter)public File listFiles(FilenameFilter filter)查看源码看执行流程北京传智播客教育 递归的思想概述递归方法定义中调用方法本身的现象递归注意实现要有出口,否则就是死递归次数不能太多,否则就内存溢出构造方法不能递归使用北京传智播客教育

10、 递归解决问题的思想及内存图递归解决问题的思想找到出口找到规律求阶乘案例普通for循环递归实现画内存图断点查看执行流程北京传智播客教育 递归练习兔子问题(斐波那契数列)递归遍历目录下指定后缀名结尾的文件名称递归删除带内容的目录北京传智播客教育 IO流概述IO流用来处理设备之间的数据传输上传文件和下载文件Java对数据的操作是通过流的方式Java用于操作流的对象都在IO包中北京传智播客教育 IO流分类按照数据流向输入流读入数据输出流写出数据按照数据类型字节流字符流什么情况下使用哪种流呢?如果数据所在的文件通过windows自带的记事本打开并能读懂里面的内容,就用字符流。其他用字节流。如果你什么都

11、不知道,就用字节流北京传智播客教育 IO流常用基类字节流的抽象基类:InputStream ,OutputStream。字符流的抽象基类:Reader , Writer。注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。如:InputStream的子类FileInputStream。如:Reader的子类FileReader。北京传智播客教育 字节流写数据OutputStreamFileOutputStream往一个文本文件中写一句话:”helloworld”分析发现其实更适合用字符流,但是由于字节流先出现,所以,我们考虑先使用字节流后面再讲会什么出现字符流。FileOutput

12、Stream的构造方法FileOutputStream(File file)FileOutputStream(String name)北京传智播客教育 字节流写数据的方式public void write(int b)public void write(byte b)public void write(byte b,int off,int len)北京传智播客教育 字节流写数据常见问题创建字节输出流到底做了哪些事情?数据写成功后,为什么要close()?如何实现数据的换行?如何实现数据的追加写入?北京传智播客教育 字节流写数据加入异常处理加入异常处理的IO流操作北京传智播客教育 字节流读取数据

13、InputStreamFileInputStream把刚才写的数据读取出来显示在控制台FileInputStream的构造方法FileInputStream(File file)FileInputStream(String name)FileInputStream的成员方法public int read()public int read(byte b)北京传智播客教育 字节流读取数据两种方式图解比较一次读取一个字节一次读取一个字节数组每次可以读取多个数据,提高了操作效率北京传智播客教育 字节流复制数据练习把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中把c:a.txt内容复制

14、到d:b.txt中把d:林青霞.jpg内容复制到当前项目目录下的mn.jpg中把d:哥有老婆.mp4复制到当前项目目录下的copy.mp4中北京传智播客教育 字节缓冲流字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流字节缓冲输出流BufferedOutputStream字节缓冲输入流BufferedInputStream北京传智播客教育 字节缓冲流复制数据练习把d:林青霞.jpg内容复制到当前项目目录下的mn.jpg中把d:哥有老婆.mp4复制到当前

15、项目目录下的copy.mp4中四种方式比较复制效率北京传智播客教育 转换流出现的原因及思想由于字节流操作中文不是特别方便,所以,java就提供了转换流。字符流=字节流+编码表。北京传智播客教育 编码表概述和常见的编码表编码表由字符及其对应的数值组成的一张表常见编码表ASCII/Unicode 字符集ISO-8859-1GB2312/GBK/GB18030BIG5UTF-8北京传智播客教育 字符串中的编码问题编码把看得懂的变成看不懂的解码把看不懂的变成看得懂的北京传智播客教育 转换流概述OutputStreamWriter 字符输出流public OutputStreamWriter(Outpu

16、tStream out)public OutputStreamWriter(OutputStream out,String charsetName)InputStreamReader 字符输入流public InputStreamReader(InputStream in)public InputStreamReader(InputStream in,String charsetName)北京传智播客教育 OutputStreamWriter写数据OutputStreamWriter写数据方法public void write(int c)public void write(char cbuf

17、)public void write(char cbuf,int off,int len)public void write(String str)public void write(String str,int off,int len)字符流操作要注意的问题flush()的作用flush()和close()的区别北京传智播客教育 InputStreamReader读数据OutputStreamWriter读数据方法public int read()public int read(char cbuf)北京传智播客教育 字符流复制文本文件把当前项目目录下的a.txt内容复制到当前项目目录下的b.

18、txt中把c:a.txt内容复制到d:b.txt中北京传智播客教育 转换流的简化写法转换流的名字比较长,而我们常见的操作都是按照本地默认编码实现的,所以,为了简化我们的书写,转换流提供了对应的子类。FileWriterFileReader北京传智播客教育 FileWriter和FileReaderFileWriter写数据FileReader读取数据FileWriter和FileReader实现文本文件的复制北京传智播客教育 字符缓冲流BufferedWriter基本用法BufferedReader基本用法字符缓冲流复制文本文件特殊功能BufferedWritervoid newLine()B

19、ufferedReaderString readLine()字符缓冲流特殊功能复制文本文件北京传智播客教育 IO流小结字节流字节输入流字节输出流字符流字符输入流字符输出流北京传智播客教育 IO流练习复制文本文件复制图片把ArrayList集合中的字符串数据存储到文本文件从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合复制单极文件夹复制单极文件夹中指定文件并修改文件名称复制多级文件夹键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件北京传智播客教育 IO流练习已知a.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstu

20、vwybpl” 请编写程序读取数据内容,把数据排序后写入b.txt中。用Reader模拟BufferedReader的readLine()功能自定义类模拟LineNumberReader的特有功能获取每次读取数据的行号登录注册IO版北京传智播客教育 操作基本数据类型的流操作基本数据类型DataInputStreamDataOutputStream北京传智播客教育 内存操作流操作字节数组ByteArrayInputStreamByteArrayOutputStream操作字符数组CharArrayReaderCharArrayWrite操作字符串StringReaderStringWriter北

21、京传智播客教育 打印流打印流概述字节流打印流字符打印流打印流特点只能操作目的地,不能操作数据。可以操作任意类型的数据。如果启动了自动刷新,能够自动刷新。可以操作文件的流打印流复制文本文件北京传智播客教育 标准输入输出流System类中的字段:in,out。它们各代表了系统标准的输入和输出设备。默认输入设备是键盘,输出设备是显示器。System.in的类型是InputStream.System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.北京传智播客教育 随机访问流RandomAccessFile概述RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。案例演示北京传智播客教育 合并流SequenceInputStream概述SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流。SequenceInputStream的构造方法SequenceInputStream(InputStream s1, I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论