上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭,

实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的。

一般都是新人才会有这个问题。当然都是从新人走过来的嘛。

下面是大师兄总结的关闭文件流的基本动作,有不合适的,还请指出来。

流在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关闭文件流的总结相关推荐

  1. java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: •对文件系统的访问提供了全面的支持 •提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的 ...

  2. Java如何正确的使用try catch finally关闭文件流的总结

    上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭, 实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的. 一般都是新人才会有这个问题.当然都是从新 ...

  3. java 文件流关闭 finally_Java如何正确的使用try catch finally关闭文件流的总结

    上学的时候,也许老师告诉你用完文件流记得要关闭,可能为了省事,他也没仔细的给你示范如何关闭, 实际开发中,要是不能正确关闭流,服务器分分钟炸掉,那是很正常的. 一般都是新人才会有这个问题.当然都是从新 ...

  4. java web 加载类_Java中用ClassLoader载入各种资源(类、文件、web资源)的方法

    lassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. ClassLoader负责载入系 ...

  5. java zip 解压 密码_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

  6. java string不为空_java如何正确判断String为空

    Hi多磨,大家好我是suleifi,今天给大家说说java中是如何处理String的. 在一个大佬非常多的QQ群中,我发现一位大佬截图了他自己的代码,他是用如下方式判断String是否为空的: //s ...

  7. java生成excel到本地_java 将数据库中的数据导出成Excel文件 并保存到本地 将文件地址返回给前端...

    /*** 导出数据为Excel文件 * 下面注释的代码为直接响应到服务器的 *@paramrequest *@paramresponse *@return */@GetMapping("/e ...

  8. java异常return笔试题_Java笔试面试总结—try、catch、finally语句中有return 的各类情况...

    前言 之前在刷笔试题和面试的时候经常会遇到或者被问到 try-catch-finally 语法块的执行顺序等问题,今天就抽空整理了一下这个知识点,然后记录下来. 正文 本篇文章主要是通过举例的方式来阐 ...

  9. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势

    image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...

最新文章

  1. Confluence 6 用户目录图例 - 可读写连接 LDAP
  2. NYOJ 301 递推求值(矩阵快速幂)
  3. [Flask+Vue]Books全栈应用
  4. 第一次作业+105032014140
  5. 用eclipse创建Java项目(以一个初学者的角度全面教学)
  6. Android Studio中导出数据库文件的方法总结
  7. 工程实践线切割3B代码参考
  8. 二叉树的前中后序遍历
  9. 关于如何创造VBS编程语言环境
  10. POI删除空白行 代码和其他用法(将会持续更新)
  11. Markdown中的二级标题去掉默认的下划线
  12. 家谱制作软件如何下载及安装
  13. python菜单栏不见了如何恢复_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
  14. 战网在线更改服务器,暴雪的“战网”是如何从无到有 并改变了在线游戏的?...
  15. 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升
  16. google android win10 ios,Flutter入门安装 ,win10 Android studio 教程
  17. CCNA 初学(第二课)
  18. HTML5期末大作业:红酒主题——简单的品牌红酒销售网页设计(4页) HTML+CSS+JavaScript 期末大作业HTML代码
  19. element-ui dialog(多弹框、嵌套弹框)被蒙版遮住
  20. GitHub开源:升讯威 SQLite 增强组件 Sheng.SQLite.Plus

热门文章

  1. java模拟而一个电话本操作
  2. MATLAB数学建模:数据图形可视化-三维绘图函数
  3. 中国金属切削液市场深度研究及未来前景分析报告2022-2028年
  4. .php中js写法,js函数常见的写法以及调用方法
  5. 加拿大卫生部药品信息数据查询
  6. 织梦后台设置nofollow标签
  7. ceil — 进一法取整 4.1 = 5 5.9 = 6 取小数点两位
  8. matlab中som结果,som 运行结果怎么看啊
  9. PostGIS 距离计算规范 - 投影 与 球 坐标系, geometry 与 geography 类型
  10. 2013年阿里巴巴实习生招聘笔试题目及解答