JAVA close关闭流最佳实践

文件流用完都要关闭,Java回收机制不会帮你关闭,如果不关闭导致垃圾越来越多,造成资源浪费,接下来谈一下关闭流的最佳实践。
第一种在try块中关闭流,不建议这样使用

import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
public class ShiYan {public static void main(String[] args) {// 获取系统根目录File[] files = File.listRoots();try {/*** RandomAccessFile是Java输入/输出流体系中功能丰富的文件内容访问类,它提供 了众多的方法 来访问文件内容,* 它既可以读取文件内容,也可以向文件输出数据。* RandomAccessFile支持“随机访问”的方式,程序可以直接跳转到文件的任意地方来读 写数据。* "rw":以读、写方式打开指定文件。如果该文件尚不存在,则尝试创建该文件。* */RandomAccessFile randomAccessFile = new RandomAccessFile(files[2]+ "\\h.txt", "rw");// seek 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。randomAccessFile.seek(randomAccessFile.length());// writeChars 按字符序列将一个字符串写入该文件。randomAccessFile.writeChars("123");//设置异常//int t=2/0;// 关闭流  不建议这样做 ,如果在关闭流上边出现异常如: int t=2/0;执行则流不会关闭,则外面还可以写入文件randomAccessFile.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}// UIManager 管理当前外观、可用外观集合、外观更改时被通知的// PropertyChangeListeners、外观默认值以及获取各种默认值的便捷方法// put 在开发人员默认值中存储一个对象。UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));// 弹窗提示JOptionPane.showMessageDialog(null, files[2] + "h.txt");}
}

第二种:在finally块写
finally块一般用来关闭物理资源(数据库连接,网络连接,磁盘文件等),这些物理资 源必须显式关闭。除非在try块、catch块中调用了退出虚拟机的方法 ( System.exit(0); ),否则不管在try块、catch块中执行怎样的代码,出现怎样的 情况,异常处理的finally块一定会被执行。

import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;public class ShiYan {public static void main(String[] args) {// 获取系统根目录File[] files = File.listRoots();RandomAccessFile randomAccessFile = null;try {/*** RandomAccessFile是Java输入/输出流体系中功能丰富的文件内容访问类,它提供 了众多的方法 来访问文件内容,* 它既可以读取文件内容,也可以向文件输出数据。* RandomAccessFile支持“随机访问”的方式,程序可以直接跳转到文件的任意地方来读 写数据。* "rw":以读、写方式打开指定文件。如果该文件尚不存在,则尝试创建该文件。* */randomAccessFile = new RandomAccessFile(files[2] + "\\h.txt", "rw");// seek 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。randomAccessFile.seek(randomAccessFile.length());// writeChars 按字符序列将一个字符串写入该文件。randomAccessFile.writeChars("123");// 设置异常 就算有这个异常也会关闭流// int t=2/0;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}// 在finally里面写finally {if (randomAccessFile != null) {try {// 关闭流randomAccessFile.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("未关闭流");}}}// UIManager 管理当前外观、可用外观集合、外观更改时被通知的// PropertyChangeListeners、外观默认值以及获取各种默认值的便捷方法// put 在开发人员默认值中存储一个对象。UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));// 弹窗提示JOptionPane.showMessageDialog(null, files[2] + "h.txt");}
}

第三种:用Java7新特性在try加()

import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;public class ShiYan {public static void main(String[] args){File[] roots = File.listRoots();RandomAccessFile a =null;try   (RandomAccessFile randomAccessFile =new RandomAccessFile(roots[2]+"\\z.txt", "rw")){randomAccessFile.seek(randomAccessFile.length());randomAccessFile.writeChars("123");a = randomAccessFile;a.writeChars("222");} catch (Exception e) {// TODO: handle exception}//UIManager 管理当前外观、可用外观集合、外观更改时被通知的 PropertyChangeListeners、外观默认值以及获取各种默认值的便捷方法//put 在开发人员默认值中存储一个对象。UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("宋体", Font.ITALIC, 20)));//弹窗提示JOptionPane.showMessageDialog(null, roots[2]+"z.txt");//测试一下流是否真的关闭,如果关闭 则会输出 流关闭了if (a!=null) {try {a.writeChars("222aaa");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("流关闭了");}}}}

流的关闭,建议使用第二种,有可能有些企业,用比Java7版本低,则Java7的新特性使用不了。

JAVA close关闭流最佳实践相关推荐

  1. 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践

    网络研讨室 您的团队是否花费超过10%的时间在生产中调试Java? 将新代码部署到生产中是一项艰巨的任务. 在您的本地环境中起作用的东西在生产中的作用并不相同,您可以通过用户来了解. 不理想吧? 生产 ...

  2. 即将举行的网络研讨会:调试生产中Java的5种最佳实践

    您的团队是否花费超过10%的时间在生产环境中调试Java? 将新代码部署到生产中是一项艰巨的任务. 在您的本地环境中起作用的东西在生产中的作用并不相同,您可以通过用户来了解. 不理想吧? 生产中的调试 ...

  3. javaone_虚拟化Java应用程序:最佳实践(JavaOne 2011)

    javaone 贾斯汀·穆雷(Justin Murray)早五分钟就开始了他的演讲["虚拟化Java应用程序:最佳实践"(21860)],并说虚拟化已经到了人们不再需要担心利用虚拟 ...

  4. 虚拟化Java应用程序:最佳实践(JavaOne 2011)

    贾斯汀·穆雷(Justin Murray)早五分钟就开始了他的演讲["虚拟化Java应用程序:最佳实践"(21860)],并说虚拟化已经到了人们不再需要担心利用虚拟化的地步. 他说 ...

  5. 面试精讲之面试考点及大厂真题 - 分布式专栏 21 限流不能乱用-系统限流最佳实践

    21 限流不能乱用-系统限流最佳实践 没有引发任何行动的思想都不是思想,而是梦想. -- 马丁 引言 19.20小节讲了系统中的降级熔断设计和对 Hystrix 组件的功能了解,关于限流降级还有一个比 ...

  6. kindle版java核心_深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf...

    深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf 还剩 50页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预 ...

  7. java 8入门与实践_30个Java入门技巧和最佳实践

    java 8入门与实践 Java是最流行的编程语言之一-无论是Win应用程序,Web应用程序,移动,网络,消费电子产品,机顶盒设备,Java随处可见. 在Java上运行的设备超过30亿. 据Oracl ...

  8. Java异常机制的最佳实践

    文章目录 1 异常概念 1.1 历史中所谓的"异常" 解决方案 2 基本异常 简单的例子 抛出异常后 抛出异常的简单例子 异常模型的观点 异常参数 3 异常捕获 3.1 try 块 ...

  9. java高性能序列化_Java最佳实践–高性能序列化

    java高性能序列化 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论并演示如何将对象序列化用于高性能应用程序. 所有讨论的主题均基于用例,这些用例源于电信行业关键任务超 ...

最新文章

  1. 腾讯姚星:两大科技矩阵助力两张网,立志攻克通用人工智能和多模态问题
  2. UM功能实现和配置技巧(上)--语音邮件、传真功能
  3. 新一代软件工程的标配:持续集成
  4. 完美下巴标准_平行下颚抓
  5. 可消费消息数量_17 个方面,综合对比 主流消息队列
  6. 安卓html输入框推起页面,移动端input输入框调起,页面上推,输入框关闭无法恢复...
  7. python检测输入文本的语言
  8. linux设置最大打开文件数
  9. Stm32是用C语言编程吗,stm32编程软件是什么 stm32用什么软件编程
  10. 嵌入式软件开发与互联网软件开发模式差异
  11. 苏州回收AB模块罗克韦尔、昆山回收AB触摸屏那些事
  12. 短期刚需还是未来趋势? 聚焦音视频技术发展方向
  13. python 监控文件变化 - python watchdog模块使用方法
  14. Android踩坑记录:This view is not constrained vertically
  15. 基于学术研究下载NOAA气象雷达资料的详细步骤
  16. 找工作收到多个 Offer,我该怎么办?
  17. 西北工业大学计算机学院王鹏,王鹏的个人主页-西北工业大学教师个人主页
  18. 算法速成记录贴Day3
  19. wxpython 右键菜单_使用wxPython打造印象笔记(14)笔记本管理
  20. BLAST Database error: No alias or index file found for protein database

热门文章

  1. 解释耳语协议和 Status.im
  2. 可以真正实现免驱的WinUSB设备
  3. STM32输出PWM波形以及实现LED呼吸灯
  4. cv/dl/cl领域的实验室官网/牛人主页/技术论坛/比赛数据库/好玩的东西
  5. 手写sql语句面试题
  6. 技术革命才是真正的革命
  7. 2020-10 补丁日:Oracle多个产品高危漏洞安全风险通告
  8. poj 1840 Eqs
  9. 几种基本的数字正则表达式[转]
  10. 【书】测试架构师-必备的6个能力