一.异常:
1.基本格式:
1).try...catch...
2).try...catch...catch...catch...
3).try...catch...finally...
4).try...catch...catch...catch...finally...
5).try...finally...
注意:
1).当多个catch时,每个catch中的"异常类型"可以是"平级关系",此时它们之间没有顺序关系;
也可以是"子父关系",此时,"父类"类型的异常,必须声明在多个catch的最后;
2).finally中的代码是一定会被执行的。
见:Demo08
3).JDK7之后,多个catch有种新的语法:
try{
//代码
}catch(异常类型1 | 异常类型2 | ... 变量名){//多个异常必须是平级关系,不能有父类类型
}
2.方法内处理异常的方式:
1).throws
A.用于方法声明处;表示:此方法"可能"会出现某种异常
B.后面跟的是"异常的类名",可以有多个,每种异常中间使用,号隔开;
C.如果方法内真的产生这些异常了,JVM会自动将异常对象抛给调用者;
D:如果throws后面跟的:
a).运行时异常:调用者可以不处理;
b).非运行时异常:调用者必须处理;
2).throw
A.用于方法内部,表示:已经产生异常了,将这个异常对象抛给调用者;
B.后面跟的"异常对象(可以自己new出来的,也可以是由JVM产生的)",只能有一个;
C.如果throw的异常类型:
a).运行时异常:方法的声明不用显示的使用throws声明抛出这种异常;
调用者也可以不处理;
b).非运行司异常:方法的声明处必须显示的使用throws抛出这种异常;
调用者必须处理,否则编译错误;
3.自定义异常:
1).我们经常会根据业务逻辑定义自己的异常;
2).定义异常类的步骤:
A.自定义类,继承自Exception或者它的某个子类;
B.建议提供一个接受String的构造方法,用于使用者指定"异常信息"
4.异常的体系结构:
Throwable(所有异常、错误的父类)
|--Error(错误):
|--Exception(异常):
|--RuntimeException(运行时异常):
|--除RuntimeException外的其它异常
二.File类:
1.File类可以表示磁盘上的一个文件或者目录;
2.构造方法:
File(String s):
File(String parent,String child):
File(File parent,String child):
3.成员方法:
获取文件名称 getName()
获取文件绝对路径 getAbsolutePath()
获取文件大小 length()字节
获取当前文件夹中所有File对象 File[] listFiles()
判断是否为文件 isFile()
判断是否为文件夹 isDirectory()
创建文件夹 mkdir() mkdirs()
创建文件 createNewFile()
三.字节流:
1.输出流:OutputStream(抽象类)
输出的方式:
1.write(int b):输出一个字节
2.write(byte[] b):输出一个字节数组;
3.write(byte[] b,int offset,int len):输出一个字节数组的一部分;
|--FileOutputStream(基本流):
|--FilterOutputStream(不学)
|--BufferedOutputStream(缓冲流)
|--PrintStream(打印流--System.out):
|--ObjectOutputStream(序列化):
writerObject(Object obj):序列化的方法
注意:1.被序列化的对象,必须实现:Serializable接口(标记接口,没有任何的方法)
2.建议定义"序列号"
3.不需要被序列化的成员属性可以使用关键字:transient
2.输入流:InputStream(抽象类)
读取的方式:
1.int read():读取一个字节:返回值:读取的字节
2.int read(byte[] b):读取一个字节数组:返回值:读取的字节数量;
|--FileInputStream(基本流)
|--FilterInputStream(不学)
|--BufferedInputStream(缓冲流)
|--ObjectInputStream(反序列化)
readObject():
注意:1.反序列化时,文件中的对象对应的"类文件"在项目中必须存在,否则无法反序列化;
四.字符流:
1.输出流:Writer(抽象类)
|--OutputStreamWriter(转换流):可以将字节流转换为字符流
|--FileWriter(基本流):
|--BufferedWriter(缓冲流):
特有方法:newLine():输出一个换行符;
|--PrintWriter(打印流-->带自动刷新--自动换行)
2.输入流:Reader(抽象类)
|--InputStreamReader(转换流):可以将字节流转换为字符流
|--FileReader(基本流):
|--BufferedReader(缓冲流):
特有方法:String readLine():读取一行数据
五.commons-io:
1.将jar包拷贝到项目中:最好是建立一个lib目录
2.在项目中的jar包上右键-->Build Path -->Add To Build Path
3.在类中就可以直接使用jar包中的类了:
4.FilenameUtils:对文件名进行操作的工具类
getExtension(String path):获取文件的扩展名;
getName():获取文件名;
isExtension(String fileName,String ext):判断fileName是否是ext后缀名;
5.FileUtils:对文件进行操作的工具类:
readFileToString(File file):读取文件内容,并返回一个String;
writeStringToFile(File file,String content):将内容content写入到file中;
copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
copyFile(File srcFile,File destFile);文件夹复制
六.Properties类:
1.java.util.Properties类它属于一种集合--Map集合
2.常用方法:
setProperty(String key ,String value):相当于Map的put()方法
String getProperty(String key):相当于Map的get()方法
Set<String> stringPropertyNames():相当于Map的keySet()
void load(Reader in):读取配置文件中的信息到集合中;
void store(Writer out,String c):将集合中数据写入到配置文件中。
|
|