黑马程序员--Java编程之异常处理及IO流阶段总结

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

异常处理

一.异常:

1.目的:

让我们的程序在出现异常情况时,不至于崩溃;

2.五种结构:

1).try…catch…
2).try…catch…catch…catch…
注意:多catch语句中的异常类型,可以是平级关系,也可以是子父级关系;
如果是子父级关系,父类类型的异常,一定放在catch列表的末尾
3).try…catch…finally…
4).try…catch…catch…catch…finally…
5).try…finally:

3.JDK7中多catch的语句:

        try{ //代码 }catch(异常类型1 | 异常类型2 | 异常类型3 变量名){ }

注意:多个异常类型必须是”平级关系”,不能是子父类关系;

4.方法内处理异常:

1.throws:

1).用在方法的声明处;
2).throws后面跟的”异常类名”,可以有多个;
3).throws表示:此方法”可能”会产生此类型异常。如果产生异常,异常对象是由JVM产生;
4).声明抛出的异常类型:
1>.运行时异常:调用者可以不捕获;
2>.非运行时异常:调用者必须捕获(或者抛出);

2.throw:

1).用在方法体内;
2).throw后面跟的”异常对象”,只能有一个;
3).throw表示:抛出了一个”异常对象”。异常对象已经产生了(可以由程序产生,也可以由JVM产生)
4).抛出的异常类型:
1>.运行时异常:方法声明处可以不声明throws此类型异常;调用者也可以不捕获;
2>.非运行时异常:方法声明处必须声明throws此类型异常;调用者必须捕获;

5.自定义异常:

1.自定义类,继承自Exception或者其它子类即可;
2.添加两个构造方法:
1).一个无参的构造方法;
2).另一个带String message的构造方法(用于指定异常消息)

IO流

一.File类

1.java.io.File:可以表示磁盘上的一个文件,或者目录;
2.文件或者目录可以存在;
3.可以通过File对象内部的一些方法对此文件或目录进行操作:
4.构造方法:
public File(String pathname):使用一个路径构造一个File(此路径可以是相对路径、绝对路径、文件路径、目录路径、可以存在,也可以不存在)
public File(String parent,String child):使用父目录名,子文件名构造一个File对象;
public File(File parent,String child):使用代表父目录的File对象和子文件的String构造一个File对象;
5.创建的方法:
public boolean createNewFile():创建文件(如果成功创建返回true,否则(文件已经存在)返回false)
public boolean mkdir():创建单级目录
public boolean mkdirs():创建多级目录
6.删除功能:
public boolean delete():可以删除文件、可以删除目录 (一定要是空目录)
7.重命名功能:
public boolean renameTo(File dest)

二.IO:

1.字节流:

1).输出流:OutputStream(抽象类):

输出的方法:
1).write(int n):输出一个字节
2).write(byte[] b):输出一个字节数组;
3).write(byte[] b, int off,int len):输出字节数组的一部分;
FileOutputStream(类):
FilterOutputStream(类):
BufferedOutputStream(缓冲流)

2).输入流:InputStream(抽象类):

读取的方法:
1).int read():读取一个字节
2).int read(byte[] b):读取一个字节数组;
FileInputStream(类):
FilterInputStream(类):
BufferedInputStream(缓冲流);

2.字符流:

1).输出流:Writer:

输出的方法:
1).write(int n):输出一个字符;
2).write(char[] c):输出一个字符数组;
3).write(char[] c ,int off,int len):输出字符数组的一部分;
4).write(String s):输出一个字符串;
5).write(String s,int off,int len):输出字符串的一部分;
OutputStreamWriter(转换流)
FileWriter(字符流)
BufferedWriter(缓冲流):
void newLine():输出一个换行符;

2).输入流:Reader:

读取的方法:
1).int read():读取一个字符;
2).int read(char[] c):读取一个字符数组;
InputStreamReader(转换流);
FileReader(字符流)
BufferedReader(缓冲流):
String readLine():读取一行数据;

IO流案例–实现批量剪切功能

public class Demo {
    public static void main(String[] args) throws IOException {
        //指定操作目录
        File orgFile = new File("E:\\1018\\day_27");
        //指定目标目录
        File tagFile = new File("E:\\1018\\day_27\\avi");
        //调用剪切方法
        cut(orgFile,tagFile);
    }
    private static void cut(File orgFile,File tagFile) throws IOException{
        File[] fileArray = orgFile.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                File file = new File(dir,name);
                if(file.isFile() && file.getName().endsWith(".avi")){
                    return true;
                }
                    return false;
            }
        });
        for(File f : fileArray){
            copy(f, tagFile);
            f.delete();
        }
        System.out.println("剪切完毕");
    }
    private static void copy(File f1,File f2) throws IOException{
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(f1));
        String fileName = f1.getName();
        if(!f2.exists()){
            f2.mkdir();
        }
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(f2,fileName)));
        int n = 0;
        byte[] byteArray = new byte[1024];
        while((n = in.read(byteArray)) != -1){
            out.write(byteArray, 0, n);
        }
        in.close();
        out.close();
    }
}

你可能感兴趣的:(java,黑马程序员)