一般在操作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);
}
}
}
}