java 文件流关闭 finally_Java如何正确的使用try catch finally关闭文件流的总结
上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭,
实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的。
一般都是新人才会有这个问题。当然都是从新人走过来的嘛。
下面是大师兄总结的关闭文件流的基本动作,有不合适的,还请指出来。
流在try外面声明,在try里面初始化,然后在finally里面给close,还记得处理异常e
finally里面close的时候也得再次try catch 一下。
具体代码和具体的解释如下:
/**
* 测试正确关闭文件流
*/
private static void testCloseFileStream() {
final Logger LOG = LoggerFactory.getLogger(Cmshome.class);
String fileName = "";
InputStream inputStream = null;//声明个引用,因为这个new对象的时候也是会异常的
try {
//这里就会异常,如果文件名不存在的话。
inputStream = new FileInputStream(fileName);
} catch (IOException e) {
//这个主要是把出现的异常给人看见,不然就算异常了,看不到就找不到问题所在。
LOG.debug("loadProperties IOException:" + e.getMessage());
} finally {
if (inputStream != null) {
try {
inputStream.close(); // 关闭流
} catch (IOException e) {
LOG.debug("inputStream close IOException:" + e.getMessage());
}
}
}
}
//错误的关闭文件的方式的解释:
Properties properties = new Properties();
try {
//这要是异常,直接就到catch语句,下面的close就不会执行啦,关闭就没用啦
InputStream wrongWay = new FileInputStream(fileName);
properties.load(wrongWay);
wrongWay.close(); // 关闭流
} catch (IOException e) {
e.printStackTrace();
}
//下面是new文件流和关闭文件流的源码,有抛异常动作。
public FileInputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null);
}
//这个是抽象类(abstract class)里面的方法,所以没有具体实现过程。
public void close() throws IOException {}
关于一楼的留言的更新:
这是我的代码,是经过debugs分析的,就一条红线。
然后下面是这个红线的详细描述。
他说的这个是编码的问题,说,我这个读文件的操作,是按默认的编码读的,警告我,选个好点的api,设置上指定的api,这样就可以很好的跨平台使用。并没有说,这个关文件流的毛病。
java 文件流关闭 finally_Java如何正确的使用try catch finally关闭文件流的总结相关推荐
- java finally关闭文件流_Java如何正确的使用try catch finally关闭文件流的总结
上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭, 实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的. 一般都是新人才会有这个问题.当然都是从新 ...
- Java如何正确的使用try catch finally关闭文件流的总结
上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭, 实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的. 一般都是新人才会有这个问题.当然都是从新 ...
- java管道流文件的复制_JavaIO 总结笔记三 基本字节字符输入输出流和文件复制...
一.IO体系 1.流主要分两大类:字节流 字符流 2.在硬盘上的文件,都是以二进制字节形式存储的,所以不管啥文件,读写时都应该用字节流 3.在java的早期版本中,的确只有字节流,没有字符流 4.一个 ...
- JAVA编译成文件的说法_下列关于使用Javac命令编译后生成文件的说法中,正确的是?...
下列关于使用Javac命令编译后生成文件的说法中,正确的是? 答:编译后生成的文件可以在Java虚拟机中运行\n\n编译后生成的文件为二进制文件\n\n编译后生成文件的后缀名为.class 线性表的链 ...
- java vi命令 退出_Git 使用vi或vim命令打开、关闭、保存文件
1 vi & vim 有两种工作模式: (1)命令模式:接受.执行 vi & vim 操作命令的模式,打开文件后的默认模式: (2)编辑模式:对打开的文件内容进行 增.删.改 操作模式 ...
- Java通过流的方式从OSS打压缩包下载或者直接下载文件,并返回输出流给前端(弹框选择下载路径)
需求 提供一个接口,前端通过按钮下载文件,根据不同的id下载对应的文件,由于都是多个文件,需要进行打压缩包下载,文件保存在oss服务器上 注意:我的压缩包名称和文件名称都是通过日期或者uuid生成的, ...
- java创建的zip无法打开或打开显示不可预料的压缩文件
问题出现 问题来源是我做的一个文件导出功能 java创建zip文件,结果在我的电脑上能够打开,在同事的mac或者未安装360压缩的电脑上打不开,然后我就分析应该是代码创建的这个文件有问题,可能360压 ...
- 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案
使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
#Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是( D ). A.$_Name ...
最新文章
- 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
- 算法的威力:法国人用台式机打破由超级计算机创造的圆周率运算世界记录
- I.MX6 Android Linux shell MMPF0100 i2c 获取数据
- html、sqlserver、java基础总结
- c#给定编码中的字符无效_C#程序检查给定的字符串是否等于(==)运算符
- 借力 Docker ,三分钟搞定 MySQL 主从复制!
- linux awk浅析(转)
- php--获取用户ip
- 提示内存不足,但内存明明很多
- python拼音名_python生成随机中文姓名和拼音
- 【算法】合并两个有序链表
- 机器人抓取中物体3D定位算法介绍
- 国企直招,内推! 科陆电子--嵌入式工程师/C# 工程师
- 学计算机专业1050显卡够不够,gtx1050显卡性能怎么样
- 移植实时操作系统到 risc-v 架构芯片时上下文切换的实现
- Python自动化运维 - day9 - 进程与线程
- 游戏c#脚本语言,C#作为脚本语言执行解密
- MaxEnt分析流程和推荐的分析内容
- Qt中使用qrc管理和使用资源文件
- C++之 fgets函数