public static void copyImage() throws IOException

{

//找到目标文件

File inFile = new File("D:\\1.jpg");

File destFile = new File("E:\\1.jpg");

//建立数据的输入输出通道

FileInputStream fileInputStream = new  FileInputStream(inFile);

FileOutputStream fileOutputStream = new FileOutputStream(destFile); //追加数据....

//每新创建一个FileOutputStream的时候,默认情况下FileOutputStream 的指针是指向了文件的开始的位置。 每写出一次,指向都会出现相应移动。

//建立缓冲数据,边读边写

byte[] buf = new byte[1024];

int length = 0 ;

while((length = fileInputStream.read(buf))!=-1){ //不限丢人的输出来第一次我写的时候,read(buf)中的参数buf被我写丢了,好久才发现的错误

fileOutputStream.write(buf,0,length); //写出很多次数据,所以就必须要追加。

}

//关闭资源 原则: 先开后关,后开先关。

fileOutputStream.close();

fileInputStream.close();

}

 //输入字节流的异常处理。
public static void readTest()
{
FileInputStream fileInputStream = null;
try
{
//找到目标文件
File file = new File("D:\\b.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){
//处理读出异常的代码 首先要阻止后面的代码执行,而且还要通知调用者出错了... throw
// throw e; //我们一般不会这样做,或者上面函数声明处使用throws 这个样子需要强迫调用者 trycatch
throw new RuntimeException(e); //将IOException包装一层,然后再抛出,这样子做的目的是为了让调用者更加的方便,运行时异常不需要trycatch包围。 }finally
{
//关闭资源
try
{
if(fileInputStream!=null){ //关闭之前应当先检查,万一之前通道就没有建立成功
fileInputStream.close();//这一块想想必须应当放到finally块重,为什么,因为如果碰到了异常,总不能不把资源释放吧
System.out.println("关闭资源成功过了");
}
} catch (IOException e)
{
System.out.println("关闭资源失败");
throw new RuntimeException(e);
} }
}
//拷贝图片是有输入流有输出流 综合在一块做异常处理,值得玩味。
public static void copyImage()
{
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
//找到目标文件
try
{
File inFile = new File("D:\\1.jpg");
File outFile = new File("E:\\1.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();
System.out.println("关闭资源成功。。。");
}
} catch (IOException e)
{
System.out.println("关闭资源失败。。。");
throw new RuntimeException(e);
}finally
{
try
{
if( fileInputStream!=null )
{
fileInputStream.close();
System.out.println("关闭资源成功...");
}
} catch (IOException e)
{
System.out.println("关闭资源失败...");
throw new RuntimeException(e);
}
}
}
}

(17)IO中的异常处理的更多相关文章

  1. JAVASE02-Unit08: 文本数据IO操作 、 异常处理

    Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...

  2. 【转】Java中关于异常处理的十个最佳实践

    原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...

  3. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  4. Java 编程中关于异常处理的 10 个最佳实践

    异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...

  5. .NET中的异常处理机制(一)

    1.异常处理的总体指导思想 学习C#中的异常处理机制,大概要了解以下几点: 首先,我们需要知道的事所有具体异常都是继承自System.Exception基类的. 其次,要熟悉FCL类库内置好的一些异常 ...

  6. 转:Spring Boot应用中的异常处理

    引自:https://www.cnblogs.com/yangfanexp/p/7616570.html 楼主前几天写了一篇“Java子线程中的异常处理(通用)”文章,介绍了在多线程环境下3种通用的异 ...

  7. 第五章 python中的异常处理

    每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...

  8. C语言中的异常处理

    一 前言: 异常处理,对于做面向对象开发的开发者来说是再熟悉不过了,例如在C#中有 try { ... } catch( Exception e){...} finally{ ..... } 在C++ ...

  9. 使用try_catch_finally处理流中的异常和JDK7流中的异常处理

    在jdk1.7之前使用try_catch_finally处理流中的异常 格式: try{ 可能会出现异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会执行的代 ...

随机推荐

  1. Eclipse 报java.lang.UnsupportedClassVersionError: ("yourclass") bad major version at offset=6

    报这个错误是指你的jar包或者class 的被编译的jdk版本比当前runtime的jdk版本高. 解决问题 1)如果是jar包,重新用jdk 1.6编译你的jar 包 2)如果是java文件或者项目 ...

  2. fetch

    1. 在order by fetch first中,所有的记录必须从磁盘取出来放入一个叫insert buffer的内部结构,然后进行排序,按照常识我们知道一般树排序的复杂度为O(nlogn), 最好 ...

  3. SQL SERVER将多行数据合并成一行(转载)

    昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name A ...

  4. swift 2.0 用代码写一个简单地UIWebView

    其实写一个UIWebView 挺简单的,但是今天就被9.0 的新特性给坑了,不知道上一个项目中有没有遇到这个问题,反正是时间成了,自己也忘记了.今天还是再说一次吧. 我们先简单的创建一个UIWebVi ...

  5. windows 下 多版本nodejs切换 nvmw

    以下教程不适用于nodejs v0.6.5及以下版本 nvmw 下载到本地 Git clone https://github.com/hakobera/nvmw.git 2.设置环境PATH 添加如上 ...

  6. mybatis进阶--一对一查询

    所谓的一对一查询,就是说我们在查询一个表的数据的时候,需要关联查询其他表的数据. 需求 首先说一个使用一对一查询的小需求吧:假设我们在查询某一个订单的信息的时候,需要关联查询出创建这个订单对应的用户信 ...

  7. 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】

    前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优 ...

  8. Angular2 + Webpack项目搭建Demo

    本文将从头开始编写实际的代码来完成一个angular2的demo. 题外话是其实angular2官网的快速开始项目已经很酷炫了,但其侧重快速二字,只够拿来练习玩耍,倒是github上确实已经有了一些不 ...

  9. C#推送RTMP到SRS通过VLC进行取流播放!!

    前面一篇文章简单的介绍了下如何利用SRS自带的播放地址进行观看RTMP直播流,也就是说是使用SRS的内置demo进行Test,但是进行视频直播肯定不可能使用那样的去开发,不开源的东西肯定不好用.由于在 ...

  10. groovy学习(二)map

    names = ['Ken' : 'Barclay', 'John' : 'Savage']divisors = [4 : [2], 6 : [3, 2], 12 : [6, 4, 3, 2]]pri ...