大家好,最近我总结了一些文件拷贝的方法,今天我和大家分享一下这些方法。

我们要注意一点:我们只能对标准文件进行拷贝,不能对目录进行拷贝。

第一种:用InputStream和OutputStream对文件进行拷贝(用InputStream和OutputStream可以对任意的标准文件进行拷贝)

try (//需要读取的原始文件输入流InputStream inputStream = new FileInputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\m.mp4");//需要拷贝到的目标文件的输出流OutputStream outputStream = new FileOutputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok.mp4");) {System.out.println("开始拷贝");//创建字节缓冲区byte[] b = new byte[1024 * 1024];//每次实际读取长度int len = 0;//循环读写while ((len = inputStream.read(b)) != -1) {//将字节数组从0开始,写入len长到输出流outputStream.write(b, 0, len);}System.out.println("拷贝结束");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

第二种:用Reader和Writer对文件进行拷贝(用Reader和Writer只能对纯文本进行拷贝比如:txt文件、java文件、HTML文件、css文件等)

try (Reader reader = new FileReader("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\新建文本文档.txt");Writer writer = new FileWriter("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok.txt");) {System.out.println("开始拷贝");char[] ch = new char[1024 * 1024];int len = 0;while ((len = reader.read(ch)) != -1) {writer.write(ch, 0, len);}System.out.println("拷贝结束");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

第三种:用BufferedInputStream和BufferedOutputStream缓冲流对文件进行拷贝(BufferedInputStream和BufferedOutputStream缓冲流对InputStream和OutputStream进行包装提高了效率,可以对任意的标准文件进行拷贝)。

try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\m.mp4"));BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok1.mp4"));) {System.out.println("开始拷贝");byte[] b = new byte[1024 * 1024];int len = 0;while ((len = bufferedInputStream.read(b)) != -1) {bufferedOutputStream.write(b, 0, len);}System.out.println("拷贝结束");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

第四种:用BufferedReader和BufferedWriter缓冲流对文件进行拷贝(BufferedReader和BufferedWriter缓冲流对Reader和Writer进行包装提高了效率,同样它也只能对纯文本进行拷贝)。

try (BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\新建文本文档.txt"));BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok1.txt"));) {/*第一种*/
//            System.out.println("开始拷贝");
//            char[] ch = new char[1024 * 1024];
//            int len = 0;
//            while ((len = bufferedReader.read(ch)) != -1) {
//                bufferedWriter.write(ch, 0, len);
//            }
//            System.out.println("拷贝结束");/*第二种*/System.out.println("开始拷贝");String src = "";//每次读取一行数据while ((src = bufferedReader.readLine()) != null) {//写入读取的一行文本()bufferedWriter.write(src);//手动加入一个换行标记到文件,否则所有内容会在同一行显示bufferedWriter.newLine();//将缓冲区的数据强制输出到目标输出源bufferedWriter.flush();}System.out.println("拷贝结束");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

第五种:用InputStreamReader和OutputStreamWriter转换流把InputStream和OutputStream转换成BufferedReader和BufferedWriter对文件进行拷贝(它也只能对纯文本进行拷贝)

try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\新建文本文档.txt")));BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok2.txt")));) {System.out.println("开始拷贝");String line = "";while ((line = bufferedReader.readLine()) != null) {bufferedWriter.write(line);     bufferedWriter.newLine();    bufferedWriter.flush();}System.out.println("拷贝结束");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

第六种:用RandomAccessFile对文件进行拷贝(RandomAccessFile可以对任意的标准文件进行拷贝,RandomAccessFile即可以对文件进行读取,也可以对文件进行写入)

try (//需要读取的原始文件输入流RandomAccessFile read = new RandomAccessFile("C:\\Users\\HP\\Desktop\\新建文件夹 (5)\\m.mp4", "r");//需要拷贝到的目标文件的输出流RandomAccessFile write = new RandomAccessFile("C:\\Users\\HP\\Desktop\\新建文件夹 (6)\\ok3.mp4", "rw");) {System.out.println("开始拷贝");byte[] b = new byte[1024 * 1024];int len = 0;while ((len = read.read(b)) != -1) {write.write(b, 0, len);}System.out.println("拷贝完成!");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

文件拷贝(6种方式)相关推荐

  1. C语言文件拷贝-四种方式

    利用文件IO的方式,实现2个文件的拷贝 int copy_by_fileIO(const char *dest_file_name, const char *src_file_name) {//OKi ...

  2. java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...

  3. 创建和应用Java包文件的两种方式(转)

    创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1  包--package    ... 12.1.1  包命名规 ...

  4. 查看binlog文件的2种方式

    2019独角兽企业重金招聘Python工程师标准>>> 查看binlog文件的2种方式 1.使用show binlog events a.获取binlog文件列表 mysql> ...

  5. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  6. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  7. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  8. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  9. Java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件 ...

  10. 用Python读取CSV文件的5种方式

    典型的数据集stocks.csv: 一个股票的数据集,其实就是常见的表格数据.有股票代码,价格,日期,时间,价格变动和成交量.这个数据集其实就是一个表格数据,有自己的头部和身体. 第一招:简单的读取 ...

最新文章

  1. 「Excel技巧」Excel技巧之如何看文件里的宏?
  2. 艾伟_转载:C#语言基础常见问题汇总
  3. PM2.5检测 -- PMS7003 采集和 MQTT 传输
  4. iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
  5. ABB机器人与PC计算机控制口连接 超级终端 命令清单
  6. YBTOJ洛谷P2387: 魔法森林(LCT)
  7. HA:HADOOP高可用机制
  8. python进阶20装饰器
  9. 轻量级java开发工具_C++主流开发工具推荐
  10. 一款非常好用的日期插件(强烈推荐)
  11. httpclient3与httpclient4不同版本使用方法
  12. 组态王c语言延时1秒,(组态王软件详细教程第三讲让画面动起来.doc
  13. Win11系统电脑怎么C盘扩容教学
  14. 平面设计和包装设计的区别关系是什么
  15. 剑指offer(51-59题)详解
  16. 100篇精选文章带你玩转TCP/IP协议
  17. mysql中ddl和ddm_DDL与DML问题
  18. PMP项目管理是什么?
  19. TMS320C6678开发笔记---IBL编译与分析4
  20. word2016使用Latex编辑公式

热门文章

  1. java实现http的GET/POST请求封装类-HttpRequest
  2. Mysql添加报错 MySqlException: Incorrect string value: ‘\xE5\xAF\xBC\xE5\x85\xA5...‘ for
  3. 31页智慧文旅云服务平台建设方案【附下载】
  4. 百度地图语音导航开发
  5. 美团校招在线考试笔试题:钱币面值组合
  6. 大数据的处理是怎样的过程
  7. 一文带你详解你不知道的ADL原理
  8. win10通过ping命令来检测网速
  9. c语言小球碰壁,小球碰壁效果
  10. python收取126或163邮件