一.异常: 
        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):将集合中数据写入到配置文件中。 
                 
 |   
        
 
    
    
    
     
 
 |