java io关闭流失败,Java的IO操作中关闭流的注意点
一、错误示例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操作中关闭流的注意点相关推荐
- java登陆密码验证失败,java用户名密码验证示例代码分享
类:NameII 权限:public 方法:main 权限:public 参数:name,password,denglu,i; 参数介绍: name,数据类型 String ,用来存储一个 ...
- 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)
菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...
- 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流
1.File类概述 File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作. 前面说到的"流",它只能操作数据,想 ...
- 第十三章、IO流_File类与递归/基本流/增强流/属性集与打印流__黑马Java第57期个人学习笔记_个人笔记
第一节.File类与递归 一.File类 (一)概念: 1.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作.(也重写了toString为getPath) 2.绝对路 ...
- 黑马毕向东Java课程笔记(day19-11——19-22)IO字节流:字节流及其读取、字节流缓冲区、自定义字节流(读取)的缓冲区、读取键盘的输入、读取/写入转换流、流操作规律
1.字节流--File 字节流的介绍 字符流:(一个字符2个字节16位) FileReader FileWriter. BufferedReader BufferedWriter字节流:(一个字节 ...
- java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...
IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...
- java.io.file.sync_Java(25)IO流和File类
IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...
- IO流学习(Java)(一)
学习笔记,主要内容来自链接 1.什么是IO 通过数据流,为序列化和文件系统提供输入和输出. IO又分为流IO(java.io)和块IO(java.nio) 流IO的好处是简单易用,缺点是效率较低.块I ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...
最新文章
- 收藏 | 多目标跟踪(MOT)入门
- cassandra百亿级数据库迁移实践
- 【Java】生成UUID
- 系统集成资质培训 - 教学方式与效果研究
- 为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:自定义编辑器
- 部门选择控件源代码公布
- SAP Cloud for Customer的前世今生
- LeetCode—33. 搜索旋转排序数组
- 良心推荐丨国庆7天长假,程序员最佳度假去处
- 统信招5000人?难以置信
- 【计算机网络】物理层
- 反向传播公式推导,BP神经网络(Back Propagation)/误差逆传播算法推导
- 安卓开发制作微信界面
- 走近计算机,走进二进制,爪哇国的诞生
- 开启少儿武术展演 弘扬中华传统文化
- 第18.1节 OE3.1实例-加载本地瓦片数据
- 打印机 树莓派安装cpus_树莓派安装网络打印机
- 思林杰科创板上市破发:大跌近24% 应收账款近2亿
- 高等数学(预备知识之反函数)
- 网红经济到底能走多远?