IO异常处理

2022-07-16 13:33:50 浏览数 (1)

IO异常处理

可以根据自己的需要选择将数据输入到文件中还是将信息输出到控制台。

抛出异常

代码语言:javascript复制
package io_demo;

import java.io.*;

public class IODemo_10 {
    public static void main(String args[]) throws IOException {
      
        FileOutputStream fos = new FileOutputStream("E:\java_doc\src\io_demo\demo_pratice");
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\java_doc\src\io_demo\demo_pratice"));
        //

        osw.write("中国");
        osw.close();
        int ch ;
        while((ch=isr.read())!=-1)
        {
            System.out.println((char)ch);
        }
        isr.close();

    }
}

标准捕获

代码语言:javascript复制
package io_demo;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IoDemoException {
    public static void main(String args[])
    {
        FileReader fr=null;
        FileWriter fw=null;
        try {
             fr= new FileReader("E:\java_doc\src\io_demo\jgdabc.txt");
             fw= new FileWriter("E:\java_doc\src\io_demo\demo_pratice");
            char[] chs = new char[1024];
            int len;
            while((len = fr.read())!=-1)
            {
                fw.write(chs,0,len);
            }
        }catch (IOException e)
        {
            e.printStackTrace();
        }finally {
            if(fw!=null)
            try {
                fw.close();
            }catch (IOException e)
            {
                e.printStackTrace();
            }
           if(fr!=null){
               try {
                   fr.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }

        }


    }
}

但是这样的处理还是比较麻烦的

捕获处理改进版(jdk7特性)

代码语言:javascript复制
package io_demo;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//jdk7的改进
public class IoDemoException01 {
    public static void main(String args[])
    {
        try (  FileReader fr = new FileReader("E:\java_doc\src\io_demo\jgdabc.txt");
               FileWriter fw = new FileWriter("E:\java_doc\src\io_demo\Student.txt");) {

            char[] chars = new char[1024];
            int len;
            while ((len = fr.read()) != -1) {
                fw.write(chars, 0, len);
            }
        }catch (IOException e)
        {
            e.printStackTrace();
        }
        }
           ;
        }

//自动释放资源

这样的处理还是会自动释放资源,不需要人为关闭。

0 人点赞