Java的IO操作中关闭流的注意点
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
public void CopyFile()
{
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("c:\\xy1.txt"); // ①
fw = new FileWriter("c:\\xy2.txt"); // ②
char[] charBuffer = new char[1024];
int len = 0;
while ((len = fr.read(charBuffer)) != -1)
{
fw.write(charBuffer, 0, len);
}
System.out.println("文件复制成功");
}
catch (IOException e)
{
throw new RuntimeException("文件拷贝操作失败");
}
finally
{
try
{
fr.close(); // ③
fw.close(); // ④
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
若①中代码出错,fr根本就没有初始化,执行③的时候就会报空指针异常。②④同样是这个道理。
二、错误示例2
public void CopyFile()
{
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("c:\\xy1.txt"); // ①
fw = new FileWriter("c:\\xy2.txt"); // ②
char[] charBuffer = new char[1024];
int len = 0;
while ((len = fr.read(charBuffer)) != -1)
{
fw.write(charBuffer, 0, len);
}
System.out.println("文件复制成功");
}
catch (IOException e)
{
throw new RuntimeException("文件拷贝操作失败");
}
finally
{
try
{
if (null != fr)
{
fr.close(); // ③
}
if (null != fw)
{
fw.close(); // ④
}
}
catch (IOException e)
{
throw new RuntimeException("关闭失败"); // ⑤
}
}
}
加上是否为空的判断可以避免空指针异常。但是如果③执行出错,程序会直接进入⑤而④根本没有得到执行,导致无法关闭。
三、正确示例
public void CopyFile()
{
FileReader fr = null;
FileWriter fw = null;
try
{
fr = new FileReader("c:\\xy1.txt");
fw = new FileWriter("c:\\xy2.txt");
char[] charBuffer = new char[1024];
int len = 0;
while ((len = fr.read(charBuffer)) != -1)
{
fw.write(charBuffer, 0, len);
}
System.out.println("文件复制成功");
}
catch (IOException e)
{
throw new RuntimeException("文件拷贝操作失败");
}
finally
{
try
{
if (null != fr)
{
fr.close();
}
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
try
{
if (null != fw)
{
fw.close();
}
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
Java的IO操作中关闭流的注意点相关推荐
- java io关闭流失败,Java的IO操作中关闭流的注意点
一.错误示例1 public void fileCopy() { FileReader fr = null; FileWriter fw = null; try { fr = new FileRead ...
- Java之IO,BIO,NIO,AIO
2019独角兽企业重金招聘Python工程师标准>>> 参考文献一 IO基础知识回顾 java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中I ...
- Java之IO,BIO,NIO,AIO知多少?
开心一笑 [一女人:"我真不放心丈夫,他准备到湖中心水最深的地方把猫扔掉."邻居:"那有什么不放心的?"女人:"猫已回家一钟头了!"] 提出 ...
- java中io各种流的关闭顺序
关闭该流并释放与之关联的所有资源.在关闭该流后,再调用 read().ready().mark().reset() 或 skip() 将抛出 IOException.关闭以前关闭的流无效. publi ...
- zipfile中怎么关闭流_深入学习JAVA -IO流详解
(一)IO流基本概念 Java对数据的操作是通过流的方式,io是java中实现输入输出的基础,它可以很方便的完成数据的输入输出操作,Java把不同的输入输出抽象为流,通过流的方式允许Java程序使用相 ...
- 关闭流时,抛出异常:java.io.IOException: Stream Closed
首先,这个异常大部分原因是因为关闭流的顺序导致的,下面看一下官方API的描述 void close()throws IOExceptionCloses this stream and releases ...
- java 常见io流 万字详解
文章目录 1.IO简介 1.1什么是IO流. 1.2数据源(Data Source) 1.3什么是流 1.4处理对象分类 1.5 java四大io抽象类及其他 1.6inputStream 1.61简 ...
- Java输入输出(io)流详解、图解
stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源.在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型: (1)字节流 ...
- java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上
标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class ...
- Java基础—IO流
第一讲 IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...
最新文章
- Delphi中的容器类(二)
- MapReduce的统计和排序功能
- Opengl-基本概念-着色器(都是固定的)
- 根据 xsd 生成 jaxb java 类
- Codeforces 1167E 尺取法
- 使用Redis存取数据+数据库存取(spring+java)
- jQuery介绍及各版本介绍(适合新手查看)
- opensips mysql_opensips中使用mysql实现用户认证
- 腾讯云学生服务器9元/月
- 01英语语法-基本句型及补语
- 写引流和游戏脚本用什么语言和工具好?网上都有哪些脚本语言?
- 中国超级计算机神威 上市公司,神威、天河、曙光三巨头引领中国超级计算机发展...
- 卡西欧计算机亮度,卡西欧怎么调3秒灯
- Adobe Dreamweaver 的基础知识
- 这款开源终端工具逼格更高!比 Xshell 好用
- oracle取出生僻字显示乱码,python cx_Oracle 查询到生僻字报错问题处理
- 2021年南阳市五中高考成绩查询,2021年南阳高中录取分数线是多少及高中排名榜...
- Linux终端设备文件介绍
- 备战一年,终于斩获腾讯T3,我坚信成功是可以复制的
- 武汉烽火通信软件工程师-Android面试经历
热门文章
- Kernel: Do NOT use global variable as possible as you can 尽量不使用全局变量
- R的可视化の basic plot
- 李彦宏被泼水,是“多数人的暴力”还是“群众的宣泄”
- laravel插入数据时报 502 Bad Gateway
- 《Pyhton语言程序设计》_第7章_对象和类
- 字符串匹配-kmp算法
- Django之tag标签和filter标签
- C++ Primer 第五版读书笔记
- Unity游戏框架设计
- zencart 1.5.1 英文原版 安装前和安装后目录文件的变换