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. 微服务框架概览之 Netty

    Netty 是什么 Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序 Netty 架构图 为什么选择Netty 通过对Netty的分析,我 ...

  2. Java监控常用工具 .

    Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助.常用工具如下: jps 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等. ...

  3. 【微信开发】玩转PHP 数组用法!

    数组的起始下标可以不从0开始,例子为从2开始. $data = array(2=>'A','B','C');     运行结果:$data = array(2=>'A',3=>'B' ...

  4. bootstrap_下拉菜单+头部

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Mock以及Mockito的使用

    mockito http://www.vogella.com/tutorials/Mockito/article.html 原文地址: http://www.open-open.com/lib/vie ...

  6. JAVA中的数据结构 - 真正的去理解红黑树

    一, 红黑树所处数据结构的位置: 在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储 红黑树可以看成B树的一种: 从二叉树看,红黑树是一颗相对平衡的二叉树 二叉树--&g ...

  7. java测试之文件操作

    package filestream; import java.io.File; public class FileTester { public static void main(String [] ...

  8. Java程序测试之线程的同步

    package tickect; class ticketnum implements Runnable { public int tickets = 100; String str = new St ...

  9. [Kafka] - Kafka内核理解:消息的收集/消费机制

    一.Kafka数据收集机制 Kafka集群中由producer负责数据的产生,并发送到对应的Topic:Producer通过push的方式将数据发送到对应Topic的分区 Producer发送到Top ...

  10. HashTable源码分析

      本次分析代码为JDK1.8中HashTable代码.   HashTable不允许null作为key和value.   HashTable中的方法为同步的,所以HashTable是线程安全的. E ...