使用字节流完成文件的拷贝:

使用字节输入流(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如何实现文件拷贝操作和如何正确关闭资源相关推荐

  1. Java中的文件输入输出操作如何实现

    Java是一门广泛应用的编程语言,它被用于开发各种类型的应用程序,包括桌面应用.服务器端应用和移动应用.在Java中,文件输入输出操作是很常见的,因为它们可以用于读取和写入文件数据.在本文中,我们将探 ...

  2. Java中实现文件更名操作

    Java中实现文件更名操作 要点:与此文件相连接的输入输出流要先关闭,后更名,才能成功更名. 代码如下: import java.io.*; class FileManager {static fin ...

  3. java对文件的操作详解,java对各种文件的操作详解

    java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //String URL = request.getRequestURI() ...

  4. java 跨服务器 文件拷贝,java拷贝远程服务器上文件

    java拷贝远程服务器上文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  5. 四十二、深入Java中的文件读取操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  6. java filestream_java FileStream文件流操作

    直接上代码,函数使用说明详见Java API文档 import java.io.*; public class StreamDemo { public static void main(String[ ...

  7. java中对文件的操作,以及目录间隔符file.separator的使用

    创建文件: File file = new File(路径,文件名); 文件或者目录是否存在: file.exists();//存在返回true 文件或者目录是否存在并且是否为标准文件: file.i ...

  8. java解析json文件_Java性能优化:正确的解析JSON文件

    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...

  9. python 资源文件_如何用 Python 正确读取资源文件

    但这样写稍显麻烦. 如果你的 Python 版本不低于3.7,那么你可以使用importlib.resources来快速读取资源文件: from importlib import resources ...

最新文章

  1. python 寻找数组的中心索引_Leetcode724:寻找数组的中心索引(java、python3)
  2. Selenium之XPATH定位(第二篇)
  3. flutter中list相关操作汇总(有这一篇就够啦)
  4. windows下Python+Editplus windows Python开发环境
  5. 容器编排技术 -- Kubernetes Annotations
  6. vue - webpack.dev.conf.js for FriendlyErrorsPlugin
  7. 受微软信任的交叉证书将在2021年4月到期,代码签名证书将无法签内核驱动,安信教你如何才能再给驱动签名
  8. php越权执行命令漏洞_泛微OA系统多版本存在命令执行漏洞
  9. HR看完这种简历就崩溃?真相是这样的!
  10. 游戏界面设计艺术性的思考
  11. Intel XEON L/E/X/W 系列的区别
  12. 2014-2015-1(实变函数56)
  13. Python NLP 入门教程
  14. Docker安装Rally
  15. 优信拍集团php面试题_【优信拍PHP高级工程师面试】问一些底层的问题和准则-看准网...
  16. 无盘服务器怎么连接双网卡,锐启无盘普通网卡做双网卡汇聚视频教程
  17. Mysql间隙锁实战
  18. 《疯狂的程序员》经典语句摘抄
  19. 12.5亿美金 联想收购IBM PC业务
  20. 小长假——纪念我们的英语学习

热门文章

  1. C语言字符串做函数参数
  2. C/C++ 基本类型注意事项
  3. array_uniquee php_【性能为王】从PHP源码剖析array_keys和array_unique
  4. matlab基本矩阵运算,科学网—matlab中矩阵基本运算 - 成爱芳的博文
  5. Spring的@Scope的几种取值
  6. 通过js让页面中的元素上下居中的写法
  7. SQL基础操作_6_处理数字
  8. 7旗舰版装不了itunes_装系统,用小白,让小白来教大家如何用U盘装WIN7系统
  9. 基于verilog按键消抖设计
  10. Git Issues