资源关闭
【摘要】 /** * * 垃圾回收(GC)的特点 * * 垃圾回收机制只负责回收堆内存资源,不会回收任何物理资源 程序无法精确控制垃圾回收动作的具体发生时间 在垃圾回收之前,总会先调用它的finalize方法 */ /** * 常见需手动释放的物理资源 * 文件/流资源 * 套接字资源 * 数据库连接资源 ...
/**
*
* 垃圾回收(GC)的特点
*
* 垃圾回收机制只负责回收堆内存资源,不会回收任何物理资源
程序无法精确控制垃圾回收动作的具体发生时间
在垃圾回收之前,总会先调用它的finalize方法
*/
/**
* 常见需手动释放的物理资源
* 文件/流资源
* 套接字资源
* 数据库连接资源
*
*
*/
/**
* 物理资源可以不手动释放吗
*
*
* 资源被长时间无效占用
* 超过最大限制后,将无资源可用
导致系统无法正常运行
*
*
*
*/
/**
* 实战案例:文件拷贝(初始版)
*
* 目的:Java7之前,实现利用基础IO流实现文件拷贝功能
* /
/** * JDK7之前的文件拷贝功能 * @author Allen17805272076 * */ public class FileCopyTest { public void copyFile(){ /** * 1、创建输入/输出流 * 2、执行文件拷贝,读取文件内容,写入到另一个文件中 * 3、关闭流资源 * * */ //定义输入路径和输出路径 String originalUrl=""; String targetUrl=""; //声明文件输入流,文件输出流 FileInputStream originalFileInputStream=null; FileOutputStream targetUrlFileOutputStream=null; try { //实例化文件流对象 originalFileInputStream=new FileInputStream(originalUrl); targetUrlFileOutputStream=new FileOutputStream(targetUrl); //读取的字节信息 int content; //迭代,读取/写入字节 try { while((content=originalFileInputStream.read())!=-1) { targetUrlFileOutputStream.write(content);; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(targetUrlFileOutputStream!=null) { try { targetUrlFileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(originalFileInputStream!=null) { try { originalFileInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
package com.zkr.resource; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /**基于JDK7之后,实现正确关闭流资源 * * @author Allen17805272076 * *try-with-resource 语法糖 * */ public class NewFileCopyTest { public void copyFile() { //定义输入路径和输出路径 String originalUrl=""; String targetUrl=""; //声明文件输入流,文件输出流 try(FileInputStream originalFileInputStream=new FileInputStream(originalUrl); FileOutputStream targetFileOutPutStream=new FileOutputStream(targetUrl);){ int content; //迭代,拷贝资源 while((content=originalFileInputStream.read())!=-1) { targetFileOutPutStream.write(content); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }
try-with-resource简介 1、Java7引入新特性 2、优雅关闭资源 3、一种语法糖 实战案例: 实战:查看编译后源码,分析内部原理
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)