Java如何实现文件拷贝操作和如何正确关闭资源
使用字节流完成文件的拷贝:
使用字节输入流(FileInputStream)将源文件中的数据读进来,同时使用字节输出流(FileOutputStream)将读进来的数据写到目标文件中,即一边读一边写,完成文件的拷贝。
//使用字节流完成文件的拷贝操作
public class FileStremCopyDemo {
public static void main(String[] args) throws IOException {
//创建目标与源对象
File srcFile = new File("file/src.txt");//源对象
File desFile = new File("file/des.txt");//目标文件
//创建输入输出流
InputStream in = new FileInputStream(srcFile);
OutputStream out = new FileOutputStream(desFile);
//IO 操作
byte[] buffer = new byte[1024];//创建容量为1024的缓冲区(存储已经读取的字节数据)
int len = -1;//表示已经读取了多少个字节数据,若果等于-1,表示已经读到最后
while((len = in.read(buffer)) != -1){
//数据在buffer数组中
out.write(buffer, 0, len);
}
//关闭资源
in.close();
out.close();
}
}
上面程序实现文件的拷贝中,是直接将异常抛出去,一般这种情况是要处理异常的,按正常的try catch处理异常,我们会发现关闭资源的代码会很繁琐,如下:
//繁琐的资源关闭方式
private static void test1() {
File srcFile = new File("file/src.txt");
File desFile = new File("file/des.txt");
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(srcFile);
out = new FileOutputStream(desFile);
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
从Java7开始,Java新添了一个特性,在try后面加上一个圆括号,将需要关闭的资源放到里面定义,程序执行完毕会自动帮我们关闭圆括号里面的资源,如下:
//Java7自动关闭资源
private static void test2() {
File srcFile = new File("file/src.txt");
File desFile = new File("file/des.txt");
try (
InputStream in = new FileInputStream(srcFile);
OutputStream out = new FileOutputStream(desFile);
) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer);
}
}catch (IOException e) {
e.printStackTrace();
}
}
————————————————
版权声明:本文为CSDN博主「caidie_huang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/caidie_huang/article/details/52738225
Java如何实现文件拷贝操作和如何正确关闭资源相关推荐
- Java中的文件输入输出操作如何实现
Java是一门广泛应用的编程语言,它被用于开发各种类型的应用程序,包括桌面应用.服务器端应用和移动应用.在Java中,文件输入输出操作是很常见的,因为它们可以用于读取和写入文件数据.在本文中,我们将探 ...
- Java中实现文件更名操作
Java中实现文件更名操作 要点:与此文件相连接的输入输出流要先关闭,后更名,才能成功更名. 代码如下: import java.io.*; class FileManager {static fin ...
- java对文件的操作详解,java对各种文件的操作详解
java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //String URL = request.getRequestURI() ...
- java 跨服务器 文件拷贝,java拷贝远程服务器上文件
java拷贝远程服务器上文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...
- 四十二、深入Java中的文件读取操作
@Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- java filestream_java FileStream文件流操作
直接上代码,函数使用说明详见Java API文档 import java.io.*; public class StreamDemo { public static void main(String[ ...
- java中对文件的操作,以及目录间隔符file.separator的使用
创建文件: File file = new File(路径,文件名); 文件或者目录是否存在: file.exists();//存在返回true 文件或者目录是否存在并且是否为标准文件: file.i ...
- java解析json文件_Java性能优化:正确的解析JSON文件
数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...
- python 资源文件_如何用 Python 正确读取资源文件
但这样写稍显麻烦. 如果你的 Python 版本不低于3.7,那么你可以使用importlib.resources来快速读取资源文件: from importlib import resources ...
最新文章
- python 寻找数组的中心索引_Leetcode724:寻找数组的中心索引(java、python3)
- Selenium之XPATH定位(第二篇)
- flutter中list相关操作汇总(有这一篇就够啦)
- windows下Python+Editplus windows Python开发环境
- 容器编排技术 -- Kubernetes Annotations
- vue - webpack.dev.conf.js for FriendlyErrorsPlugin
- 受微软信任的交叉证书将在2021年4月到期,代码签名证书将无法签内核驱动,安信教你如何才能再给驱动签名
- php越权执行命令漏洞_泛微OA系统多版本存在命令执行漏洞
- HR看完这种简历就崩溃?真相是这样的!
- 游戏界面设计艺术性的思考
- Intel XEON L/E/X/W 系列的区别
- 2014-2015-1(实变函数56)
- Python NLP 入门教程
- Docker安装Rally
- 优信拍集团php面试题_【优信拍PHP高级工程师面试】问一些底层的问题和准则-看准网...
- 无盘服务器怎么连接双网卡,锐启无盘普通网卡做双网卡汇聚视频教程
- Mysql间隙锁实战
- 《疯狂的程序员》经典语句摘抄
- 12.5亿美金 联想收购IBM PC业务
- 小长假——纪念我们的英语学习
热门文章
- C语言字符串做函数参数
- C/C++ 基本类型注意事项
- array_uniquee php_【性能为王】从PHP源码剖析array_keys和array_unique
- matlab基本矩阵运算,科学网—matlab中矩阵基本运算 - 成爱芳的博文
- Spring的@Scope的几种取值
- 通过js让页面中的元素上下居中的写法
- SQL基础操作_6_处理数字
- 7旗舰版装不了itunes_装系统,用小白,让小白来教大家如何用U盘装WIN7系统
- 基于verilog按键消抖设计
- Git Issues