java IOException的处理

一般在操作IO时异常的处理原则

package cn.itcast.exception;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.management.RuntimeErrorException;

/*
 IO异常应该如何处理: 
 
 */
public class Demo1 {

    public static void main(String[] args) {
        readTest();
    }
    
    
    //拷贝图片
    public static void copyImage(){
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        try{
            //找到目标文件
            File inFile = new File("F:\\美女\\1.jpg");
            File outFile = new File("F:\\拷贝.jpg");
            //建立数据的输入输出通道
            fileInputStream = new FileInputStream(inFile);
            fileOutputStream = new FileOutputStream(outFile);
            //建立缓冲字节数组,边读边写
            byte[] buf = new byte[1024];
            int length = 0 ; 
            while((length = fileInputStream.read(buf))!=-1){
                fileOutputStream.write(buf,0,length);
            }
        }catch(IOException e){
            System.out.println("拷贝出错了...");
            throw new RuntimeException(e);
        //关闭资源的原则: 先开后关, 后开先关。
        }finally{
            try{
                if(fileOutputStream!=null){
                    //关闭资源
                    fileOutputStream.close();
                }
            }catch(IOException e){
                throw new RuntimeException(e);
            }finally{
                try{
                    if(fileInputStream!=null){
                        fileInputStream.close();
                    }
                }catch(IOException e){
                    throw new RuntimeException(e);
                }
            }
        }
        
        
    }
    
    
    
    public static void readTest() {
        FileInputStream fileInputStream = null;
        try{
            File file = new File("F:\\a.txt");
            //建立文件的输入流通道
            fileInputStream = new FileInputStream(file);
            //建立缓冲字节数组读取文件数据
            byte[] buf = new byte[1024];
            int length = 0 ; //记录本次读取的字节个数
            //读取文件的数据
            while((length = fileInputStream.read(buf))!=-1){
                System.out.println(new String(buf,0,length));
            }
        }catch(IOException e){
            //如何处理???
            System.out.println("读取文件出错...");
            throw  new RuntimeException(e);  // 把真正的异常原因包装到RuntimeException中然后再抛出。 (糖衣炮弹)
            
        }finally{
            try{
                //关闭资源()
                if(fileInputStream!=null){
                    fileInputStream.close();        
                    System.out.println("关闭资源成功...");
                }
            }catch(IOException e){
                System.out.println("关闭资源失败...");
                throw  new RuntimeException(e);
            }
        }
    }
    
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容