今天终于开始学习传说中的IO流,不过今天一半时间是讲的异常的知识,IO只讲了一个简单的开始,感觉还可以。 Day19-异常、IO-File 2015/04/29 [size=10.5000pt]1、异常 在编写程序的时候,可能会有很多问题存在,为了将来方便的表示这些问题的原因、类型、位置,java就提供异常对象。 程序出现了不正常的情况。 Throwable Error:严重问题,通常出现重大问题,比如运行的类不存在或者内存溢出。 Exception:不严重问题 编译期间:需要处理的; 运行期间:需要修改代码或者传递的参数。 程序出现异常,该怎么解决? 首先出现异常,jvm会采用自动处理方式,它会把异常的类型、原因、位置显示在控制台上,然而后面的代码是不能执行的。 A:编译期间异常:编写处理代码,具体方法如下 处理异常的方法: 1)获取 基本格式: (1)一个代码中有一个异常 Try{ 可能发生问题的代码。(代码尽可能的少) }catch(异常类名 变量名){ 异常处理代码(例如:返回一个错误页面) }finally{ 释放资源。(用在数据库、IO) //finally一般用在异常中,里面的代码永远会执行,用于释放资源! } (2)一个代码中有多个异常:用一个try多个catch。从JDK7以后,一个catch()中针对多个异常程序可以有多个异常类。示例 catch(异常1 | 异常2 | 异常3 | e){ e.printStackTrace(); } 如果异常是平级关系,没有顺序问题; 如果异常存在子夫类关系,父类放在最后。 2) Throw抛出异常 Throws声明异常 如果能处理就选择获取方式,否则选择抛出方式。 B:编译期间异常:不能用try、catch和throws处理,只能修改代码。 Throwable类中的方法: Public String Public String toString():返回异常的简短描述。返回的形式;全路径类名 : 消息字符串。 Public void printStackTrace():把错误显示在控制台上。 面试题: (1)final、finally和finalize的区别? Finalize是垃圾回收机制。 (2)finally中的代码一定会永远执行吗? 会永远执行,但是有一个特殊情况:在代码执行到finally之前,jvm就退出了。 (3)加入在catch里面有return语句,请问finally里面的代码还会执行吗?如果执行时在return之前还是在之后? 会执行,在return之前执行。但是这样说不准确,准确的是在return之间执行 [size=10.5000pt]2、自定义异常 使用: [size=10.5000pt]3、IO(input/output)流 泛指对某个设备或环境进行数据的输入或输出。 对于输入输出问题,java将之抽象为流对象来解决。对于不同的输入输出问题,会有相应的流对象提供解决方案。 (1)IO流用来处理不同设备之间输入输出数据问题的。 (2)IO流操作的类都在IO包中。 (3)IO流分类 A按照流向分: 输入流 读取数据 输出流 写入数据 B按操作数据不同 字节流(2个字节=1个字符) 字符流(解决文本数据的问题)通过Windows自带的记事本能够打开这个文件,并且里面的内容还能读懂,这样的文件就可以用字符流就可以。否则用字节流。 File类 数据在硬盘上最常见的方式就是文件,而文件本身有很多的属性,对文件进行操作,因此java就提供了file类。 文件和目录名的具体表现形式,因此文件既可以表示文件也可以表示文件夹。 构造方法: File(String pathname):根据指定的路径创建File对象。 File(String parent,String child):根据指定的父文件夹和子文件或者文件夹创建File对象; File(File parent,String child):根据指定的父File对象和子文件或者文件夹创建File对象。 功能方法: (1)创建功能 创建文件: public boolean createNewFile() 如果指定的文件不存在,就创建。如果存在,就不创建。 创建件文件夹: public boolean mkdir():创建指定的目录,如果存在,就不创建。 public boolean mkdirs():创建指定的目录,如果存储,就不创建。这个时候,如果父目录不存在,它也会自动创建。 绝对路径:以盘符开始的路径 (一般使用) 相对路径:不以盘符开始的路径
总结的内容超出帖子预定的字节数,所以把后面的知识放在首个回复里了!
|