一、错误示例1 public void fileCopy()

{

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 fileCopy()

{

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 fileCopy()

{

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("关闭失败");

}

}

}

java io关闭流失败,Java的IO操作中关闭流的注意点相关推荐

  1. java登陆密码验证失败,java用户名密码验证示例代码分享

    类:NameII    权限:public 方法:main    权限:public 参数:name,password,denglu,i; 参数介绍: name,数据类型 String ,用来存储一个 ...

  2. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

  3. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  4. 第十三章、IO流_File类与递归/基本流/增强流/属性集与打印流__黑马Java第57期个人学习笔记_个人笔记

    第一节.File类与递归 一.File类 (一)概念: 1.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作.(也重写了toString为getPath) 2.绝对路 ...

  5. 黑马毕向东Java课程笔记(day19-11——19-22)IO字节流:字节流及其读取、字节流缓冲区、自定义字节流(读取)的缓冲区、读取键盘的输入、读取/写入转换流、流操作规律

    1.字节流--File   字节流的介绍 字符流:(一个字符2个字节16位) FileReader FileWriter. BufferedReader BufferedWriter字节流:(一个字节 ...

  6. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...

    IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...

  7. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

  8. IO流学习(Java)(一)

    学习笔记,主要内容来自链接 1.什么是IO 通过数据流,为序列化和文件系统提供输入和输出. IO又分为流IO(java.io)和块IO(java.nio) 流IO的好处是简单易用,缺点是效率较低.块I ...

  9. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...

    File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...

最新文章

  1. 收藏 | 多目标跟踪(MOT)入门
  2. cassandra百亿级数据库迁移实践
  3. 【Java】生成UUID
  4. 系统集成资质培训 - 教学方式与效果研究
  5. 为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:自定义编辑器
  6. 部门选择控件源代码公布
  7. SAP Cloud for Customer的前世今生
  8. LeetCode—33. 搜索旋转排序数组
  9. 良心推荐丨国庆7天长假,程序员最佳度假去处
  10. 统信招5000人?难以置信
  11. 【计算机网络】物理层
  12. 反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导
  13. 安卓开发制作微信界面
  14. 走近计算机,走进二进制,爪哇国的诞生
  15. 开启少儿武术展演 弘扬中华传统文化
  16. 第18.1节 OE3.1实例-加载本地瓦片数据
  17. 打印机 树莓派安装cpus_树莓派安装网络打印机
  18. 思林杰科创板上市破发:大跌近24% 应收账款近2亿
  19. 高等数学(预备知识之反函数)
  20. 网红经济到底能走多远?

热门文章

  1. 向量相似度java_计算一组向量相似度
  2. 【面试题】面试官:vue的这些原理你了解吗?
  3. 深度解读 Chaos Mesh®,探索云原生混沌工程的奥秘
  4. 麻雀搜索算法(Sparrow Search Algorithm,SSA)
  5. Vxe Table/Grid 单元格分组合并
  6. 敏捷开发中的站立会应该怎么开?
  7. 香港科大(广州)8位创校教授获评2020南沙高端领军人才
  8. 二维笛卡尔坐标系下的角的概念
  9. 找出最重的苹果C语言
  10. 【报告分享】2020大众心理健康洞察报告-简单心理(附下载)