(17)IO中的异常处理
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中的异常处理的更多相关文章
- JAVASE02-Unit08: 文本数据IO操作 、 异常处理
Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...
- 【转】Java中关于异常处理的十个最佳实践
原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...
- Java 编程中关于异常处理的 10 个最佳实践
异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...
- .NET中的异常处理机制(一)
1.异常处理的总体指导思想 学习C#中的异常处理机制,大概要了解以下几点: 首先,我们需要知道的事所有具体异常都是继承自System.Exception基类的. 其次,要熟悉FCL类库内置好的一些异常 ...
- 转:Spring Boot应用中的异常处理
引自:https://www.cnblogs.com/yangfanexp/p/7616570.html 楼主前几天写了一篇“Java子线程中的异常处理(通用)”文章,介绍了在多线程环境下3种通用的异 ...
- 第五章 python中的异常处理
每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...
- C语言中的异常处理
一 前言: 异常处理,对于做面向对象开发的开发者来说是再熟悉不过了,例如在C#中有 try { ... } catch( Exception e){...} finally{ ..... } 在C++ ...
- 使用try_catch_finally处理流中的异常和JDK7流中的异常处理
在jdk1.7之前使用try_catch_finally处理流中的异常 格式: try{ 可能会出现异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会执行的代 ...
随机推荐
- Memcached在windows下的安装和使用
1.下载memcached安装文件及c#开发所需的dll 2.解压<memcached-1.2.6-win32-bin.zip>,并cmd,定位到解压目录. 3.安装服务:输入命令 mem ...
- POJ1753 搜索
Flip Game Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on ...
- json-lib之复杂数据类型的转换
在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等 public class Student{ private String sname; privat ...
- Windows Azure Virtual Machine (34) 保护Azure虚拟机
<Windows Azure Platform 系列文章目录> 请注意:我们在Azure上创建的虚拟机,都是可以通过公网IP地址来访问的.(直接通过虚拟机的IP地址:PIP,或者通过负载均 ...
- ubuntu linux 下 mysql 学习笔记
'#' 后为注释 以下为在shell中的操作: 打开终端(terminal)1.登录MySQL mysql-u root -p 输入密码:******2.几个简单的命令 (1)show databas ...
- windows下composer安装不了或composer命令无效的解决办法
安装方法: http://docs.phpcomposer.com/00-intro.html#Installation-Windows (官方中文帮助文档) 问题描述1: 通过Composer-Se ...
- java_JDBC(1)
Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver";Class.forName(" ...
- 智能指针shared_ptr
// 智能指针会自动释放所指向的对象. // shared_ptr的应用场景是:程序需要在多个对象间共享数据 /* 先从应用场景入手吧,说矿工A发现了一个金矿. * 然后矿工A喊来了矿工B,一起开采, ...
- PHP静态成员变量
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员.. ...
- 【android开发笔记】为Button的背景图片添加边框式样式效果
现在做的项目遇到一个问题,设计给过来的图片只有一种状态,但是实现的需求是要求有两个状态,另一种选状态为图片背景加边框.如图: 刚开使用使用ImageView ,ImageViewButton 效果不是 ...