一.异常:
1).try...catch的几种格式:
A.try...catch...
B.try...catch...catch...catch...
C.try...catch...finally...
D.try...catch...catch...catch...finally...
E.try...finally...
2).throws和throw的区别:
A.throws:
1.用在方法的声明处;
2.后面跟的是"异常类名",而且可以有多个。
3.表示:方法内"可能"会产生这种异常。如果产生异常,
JVM会将异常对象抛给调用者。
4.抛出的异常类型:
A.运行时异常:调用者可以不处理;
B.非运行时异常:调用者必须处理,try..catch..或者继续抛出。
B.throw:
1.用在方法内部;
2.后面跟的是"异常对象",而且只能有一个。
3.表示:已经发生了某种异常。异常对象可能是由程序自己new出来的,也可能是
JVM自动产生的。
4.抛出的异常类型:
A.运行时异常:方法声明处可以不声明throws;调用者可以不处理;
B.非运行时异常:方法声明处必须声明throws;调用者必须要处理;
3).继承中方法重写时的异常处理:
无论父类方法是否抛出异常:
子类都可以:
1.不抛出任何异常;
2.可以抛出任何的运行时异常;
3.不能抛出比父类更多的非运行时异常;
4).自定义异常:
1.有些时候我们需要根据具体的业务逻辑,抛出某些异常;
2.自定义异常的步骤:
1).自定义类,继承自Exception或者某个子类(RuntimeException--运行时)
2).建议:提供一个带参的构造方法,用于指定异常信息;
3).使用:在该抛出这种异常的位置,throw这种异常。
二.File类:
1.File代表磁盘上的一个文件/目录;
2.构造方法:
File(String filePath):
File(String parent,String child):
File(File parent,String child):
3.常用方法:
。。。。。
String[] list():获取目录下所有子文件/子目录的名称的数组;
File[] listFiles():获取目录下所有子文件/子目录的File的数组;
File[] listFiles(FilenameFilter filter):
File[] listFiles(FileFilter filter):
4.过滤器:
FilenameFilter:
boolean accept(File dir,String name)
FileFilter:
boolean accept(File file)
三.递归:
1.递归:又叫:递归方法调用,是指方法可以调用自己。
2.递归的注意事项:
1).递归要有出口,否则就是死递归;
2).递归层次不要太深,否则内存溢出;
3).构造方法不能递归调用;
四.IO流:
1.字节流:
1).输出流:OutputStream
输出的方法(三种):
1).输出一个字节;2).输出字节数组;3).输出字节数组的一部分;
|--FileOutputStream(子类)
|--FilterOutputStream(不学)
|--BufferedOutputStream(缓冲流)
|--PrintStream(打印流)
|--ObjectOutputStream(序列化流)
2).输入流:InputStream
读取的方法(两种):
1).读取一个字节;2).读取一个字节数组;
|--FileInputStream(子类)
|--FilterInputStream(不学)
|--BufferedInputStream(缓冲流)
|--ObjectInputStream(反序列化流)
2.字符流:
1).输出流:Writer
输出的方法(五种):
1).输出一个字符;2).输出一个字符数组;3).输出一个字符数组的一部分;4).输出一个字符串;5).输出字符串的一部分;
|--OutputStreamWriter(转换流 --> 编码表 + 字节流)
|--FileWriter(子类--> 默认编码表)
|--BufferedWriter(缓冲流):
新增的方法:void newLine():输出一个换行符
|--PrintWriter(打印流)
新增的方法:void println()://write(String s) + newLine() + flush()
2).输入流:Reader
读取的方法(两种)
1).读取一个字符;2).读取一个字符数组;
|--InputStreamReader(转换流 --> 编码表 + 字节流)
|--FileReader(子类 --> 默认编码表)
|--BufferedReader(缓冲流):
新增的方法:String readLine():读取一行数据,不包括换行符;
五.Properties类:
1.它本质上是一个:Map集合
2.它内部包含了一些方法,可以很方便的操作配置文件:
3.新增的方法:
1). setProperty(String key,String value):相当于Map的put(K,V)
2). getProperty(String key):相当于Map的get(K)方法
3). stringPropertyNames():相当于Map的keySet()方法
4). store(Writer out,String comm):使用字符输出流,向配置文件中一次性写入集合中的内容;
5). load(Reader in):使用字符输入流,从配置文件中一次性读取所有内容到集合中。
六.序列化:
1.序列化:是将一个对象(包括属性值)保存到一个文件中,或者通过网络进行传输;
序列化流:
java.util.ObjectOutputStream
writeObject(Object obj)
注意:被序列化的类,必须实现:java.io.Serializable接口,此接口中没有任何方法,这种接口叫:标记接口
2.反序列化:是将以前序列化的对象再次读取到程序中。
反序列化流:
java.util.ObjectInputStream
Object readObject()
3.序列号:
1).被序列化的类都会隐式的被定义一个"序列号",并会被序列化到文件中。
如果更改"类"内容,会自动修改序列号,这样就会使此序列化跟之前被序列化的对象的序列化不一致,
这时反序列化就会抛异常。
2).建议:自己来维护序列号。
4.瞬态关键字:transient
1).如果某个类的某个属性不希望被序列化,可以声明为:transient
private transient int a ;
七.commonsIO:
1.使用第三方jar的步骤:
1).(建议):将第三方jar包复制到项目中;
2).在Eclipse中,选中第三方jar包,右键-->Build Path --> Add to Build Path(添加到构建路径)
3).在其它类中导入包就可以使用了。
2.FilenameUtils:对文件名进行操作的一些方法
1).getExtension(String fileName):获取文件的扩展名;
2).getName(String fileName):获取文件名
3).isExtension(String fileName,String ext):判断fileName是否是ext后缀;
3.FileUtils:对文件进行操作的一些方法:
1).readFileToString(File srcFile):从文件中读取所有内容,返回一个String
2).writeStringToFile(File destFile,String info):将info写入到destFile中;
3).copyDirctoryToDirctory(File srcDir,File destDir):将srcDir复制到destDir下;
4).copyFile(File srcFile,File destFile):将srcFile复制到destFile中。
|
|