黑马程序员技术交流社区
标题: Java基础总结—异常、IO-File [打印本页]
作者: Richard926 时间: 2015-4-30 00:04
标题: Java基础总结—异常、IO-File
今天终于开始学习传说中的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():创建指定的目录,如果存储,就不创建。这个时候,如果父目录不存在,它也会自动创建。
绝对路径:以盘符开始的路径 (一般使用)
相对路径:不以盘符开始的路径
总结的内容超出帖子预定的字节数,所以把后面的知识放在首个回复里了!
作者: Richard926 时间: 2015-4-30 00:06
(2)删除功能
Public boolean delete():既可以删除文件也可以删除文件夹。取决于使用的对象。
注意:
A:如果删除的目录下还有内容,那么必须先把所有的内容删除完毕后再删除目录
B:java语言的删除不走回收站
(3)判断功能
Boolean exists():判断是否存在
Boolean isFile():判断是否是文件
Boolean isDirectory():判断是否是文件夹
Boolean isAbsolute():判断是否是绝对路径
Boolean canRead():判断是都可读
Boolean canWrite():判断是否可写
作者: 何志超 时间: 2015-4-30 10:08
很给力呀,特别是finally,面试经常会被问到的
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |