【Android】学习札记第7章之异常及IO初步
开发一个android程序,请多少个老师也不如自己遇到问题自己解决,项目中会存在多种不同的异常,并且如果你自己有机会写了一个对团队都有用的类,可能会存在异常,所以也要自定义异常,面对各种各样的异常一定要耐心的去解决问题。
IO流在android程序中也是不可缺少的知识点,IO会产生不同的IO异常,下面就针对这两方面去学习,首先先来熟悉一下异常和IO的基本知识。
工具/原料
JDK、eclipse、android SDK、ADT
一、异常(java.lang)
1、throws(从管道向外抛出异常)
void f() throws Exception{}
①RuntimeException(默认管道,不需要抛出):
在方法上默认存在它的抛出管道。
它和它的子类对象,都可以从它的管道抛出。
②其他异常:需要手动设置抛出管道,才能抛出;否则,必须捕获异常。
③子类抛出异常不能比父类抛出异常多。(子类的访问级别不能比父类的访问级别小。)
2、throw
执行抛出动作,手动抛出异常。throw new Exception("异常信息");,当运行后等同于return后面语句不再执行。
3、异常包装
无法修复错误,将异常抛给调用位置处理,将不能抛出的异常封装到可抛出的类型(如:RuntimeException)中抛出。
4、自定义异常
①起一个合适的类型名称
②找一个合适的异常父类(Exception:需要设置抛出管道、RuntimeException)
③添加构造方法
二、IO(java.io)
Ⅰ、File(java.io.File)
File对象封装了一个磁盘路径字符串(路径:文件路径或目录路径,可有可无)。
Ⅱ、创建对象
File f=new File("d:/a.txt");
File f=new File("d:/","a.txt");
Ⅲ、方法:
①通用:
canRead():是否可读
canWrite():是否可写
canExecute():是否可执行
isHidden():是否有隐藏文件
exists():判断是否存在文件
getAbsolutePath():获得绝对路径
getName():获得文件名
getParent():获得父目录
lastModified():返回修改时间()毫秒值
length():文件字节量,对目录无效
isDirectory():是否是目录
isFile():是否是文件
getTotalSpace():获得空间总大小
getFreeSpace():获得剩余空间大小
②文件或目录操作:
createNewFile():创建文件,返回boolean值,如果文件已存在,返回false,如果存在且所在目录不存在,会有异常。
delete():删除一个文件或一个“空目录”,返回boolean值
mkdir():创建单层目录,返回boolean值
mkdirs():创建多层目录,返回boolean值
renameTo():改名、移动,返回boolean值
static createTempFile(前缀,扩展名):创建系统临时文件
③文件列表:
list():返回所有文件和目录的字符串数组
listFiles():返回所有文件和目录的File数组
list(new FilenameFilter(){}):返回过滤好的文件和目录的字符串数组
listFiles(new FilenameFilter(){}):返回过滤好的所有文件和目录的File数组
Ⅳ、递归:
连续调用自己的方法,使自己一次一次变成最简单的方法。
Ⅴ、练习:
使用递归调用求目录的总大小。
注意事项
对于异常要认真对待异常信息,做到可以自己排查错误。
对于IO及IO流要清楚每一个IO的类的作用,才能在项目中游刃有余。