文件的异常处理

  • try…catch..finally异常处理

    1
    2
    3
    4
    5
    6
    7
    try {
    可能出现异常的代码;
    }catch(异常类名, 变量名) {
    异常的处理代码;
    }finally {
    执行所有清除操作;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    /**
    * try...catch..finally异常处理
    */
    public static void fileMethod() {
    FileReader fileReader = null;
    FileWriter fileWriter = null;

    try {
    fileReader = new FileReader("fr.txt");
    fileWriter = new FileWriter("fw.txt");

    char[] chars = new char[1024];
    int len;
    while ((len = fileReader.read(chars)) != -1) {
    fileWriter.write(chars, 0, len);

    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (fileReader != null) {
    try {
    fileReader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if (fileWriter != null) {
    try {
    fileWriter.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
  • JDK7提供TWR的改进异常处理

    1
    2
    3
    4
    5
    6
    7
    try(定义流对象) {
    可能出现异常代码;
    }catch(异常类名, 变量名) {
    异常的处理代码;
    }

    自动释放资源...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /**
    * JDK1.7提供TWR的改进异常处理
    */
    public static void fileMethodNew() {
    try (
    FileReader fileReader = new FileReader("fr.txt");
    FileWriter fileWriter = new FileWriter("fw.txt");
    ) {
    char[] chars = new char[1024];
    int len;
    while ((len = fileReader.read(chars)) != -1) {
    fileWriter.write(chars, 0, len);

    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
  • JDK9提供改进异常处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 定义输入流对象;
    // 定义输出流对象;
    try(输入流对象;输出流对象) {
    可能出现异常的代码;
    }catch(异常类名, 变量名) {
    异常的处理代码;
    }

    自动释放资源...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
    * JDK9提供改进异常处理
    */
    public static void fileMethodNews() throws IOException {
    FileReader fileReader = new FileReader("fr.txt");
    FileWriter fileWriter = new FileWriter("fw.txt");
    try (fileReader; fileWriter) {
    char[] chars = new char[1024];
    int len;
    while ((len = fileReader.read(chars)) != -1) {
    fileWriter.write(chars, 0, len);

    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }