背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制。

实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操作

 1 private static void streamCopyFile(File srcFile, File desFile) throws IOException {
 2         // 使用字节流进行文件复制
 3         FileInputStream fi = new FileInputStream(srcFile);
 4         FileOutputStream fo = new FileOutputStream(desFile);
 5         Integer by = 0;
 6         //一次读取一个字节
 7         while((by = fi.read()) != -1) {
 8             fo.write(by);
 9         }
10         fi.close();
11         fo.close();
12     }

实现方式二:使用BufferedInputStream/BufferedOutputStream高效字节流进行复制文件

 1 private static void bufferedStreamCopyFile(File srcFile, File desFile) throws IOException {
 2         // 使用缓冲字节流进行文件复制
 3         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
 4         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile));
 5         byte[] b = new byte[1024];
 6         Integer len = 0;
 7         //一次读取1024字节的数据
 8         while((len = bis.read(b)) != -1) {
 9             bos.write(b, 0, len);
10         }
11         bis.close();
12         bos.close();
13     }

实现方式三:使用FileReader/FileWriter字符流进行文件复制。(注意这种方式只能复制只包含字符的文件,也就意味着你用记事本打开该文件你能够读懂)

 1 private static void readerWriterCopyFile(File srcFile, File desFile) throws IOException  {
 2         // 使用字符流进行文件复制,注意:字符流只能复制只含有汉字的文件
 3         FileReader fr = new FileReader(srcFile);
 4         FileWriter fw = new FileWriter(desFile);
 5
 6         Integer by = 0;
 7         while((by = fr.read()) != -1) {
 8             fw.write(by);
 9         }
10
11         fr.close();
12         fw.close();
13     }

实现方式四:使用BufferedReader/BufferedWriter高效字符流进行文件复制(注意这种方式只能复制只包含字符的文件,也就意味着你用记事本打开该文件你能够读懂)

 1 private static void bufferedReaderWriterCopyFile(File srcFile, File desFile)  throws IOException {
 2         // 使用带缓冲区的高效字符流进行文件复制
 3         BufferedReader br = new BufferedReader(new FileReader(srcFile));
 4         BufferedWriter bw = new BufferedWriter(new FileWriter(desFile));
 5
 6         char[] c = new char[1024];
 7         Integer len = 0;
 8         while((len = br.read(c)) != -1) {
 9             bw.write(c, 0, len);
10         }
11
12         //方式二
13         /*String s = null;
14         while((s = br.readLine()) != null) {
15             bw.write(s);
16             bw.newLine();
17         }*/
18
19         br.close();
20         bw.close();
21     }

以上便是Java中分别使用字节流、高效字节流、字符流、高效字符流四种方式实现文件复制的方法!

转载于:https://www.cnblogs.com/hafiz/p/5452608.html

Java实现文件复制的四种方式相关推荐

  1. java直接调用复制文件,java中文件复制的4种方式,java文件的复制

    java中文件复制的4种方式,java文件的复制 今天一个同事问我文件复制的问题,他一个100M的文件复制的指定目录下竟然成了1G多,吓我一跳,后来看了他的代码发现是自己通过字节流复制的,定义的字节数 ...

  2. Java反射之创建对象的四种方式

    Java反射之创建对象的四种方式 1.使用new关键字 2.使用Java反射机制,反射构造器 3.使用克隆方式创建对象Cloneable 4.使用序列化Serializable 1.使用Java反射机 ...

  3. C++ 创建文件夹的四种方式

    在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...

  4. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello {public stati ...

  5. java中Map遍历的四种方式

    java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...

  6. Java 数组转List的四种方式

    Java 数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) ​ 使用Arrays工具类Arrays.asList(strArray)方式,转换 ...

  7. Java遍历Map对象的四种方式

    关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 2 3 4 Map<Integer, Intege ...

  8. android java 多线程,Android多线程的四种方式

    当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在 ...

  9. C++文件读取的四种方式

    C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式. C++文件读取的一般步骤: 1.包含头文件 #include<fstream> 2.创建流对象:i ...

最新文章

  1. jquery怎么获取radio的值
  2. Apache Hook机制解析(中)——细节讨论
  3. Livemesh文件同步功能--使用图解
  4. 超级简单的mysql主从数据库配置攻略以及错误处理
  5. jsp mysql代码提示错误,Web工程出现错误mysql错误
  6. leetcode 1328. Break a Palindrome | 1328. 破坏回文串(贪心)
  7. UPS改造及终端流量监控系统
  8. 小度智能音响拆解 芯片_打磨小度智能音箱:深度拆解,发掘升级潜能
  9. 红橙Darren视频笔记 动画讲解 仿58同城 加载动画
  10. 好心酸!三星可折叠屏手机Galaxy Fold下月也无法发货
  11. 单向链表反转-JS实现
  12. 第九届蓝桥杯省赛C++A组第二题 ---星期一
  13. 华三 h3c ospf、rip 路由引入和路由策略
  14. Java进阶:SpringMVC中获取web.xml中的全局参数
  15. 双11当天,淘宝搜索如何让CPU使用率降45%,GMV提1% | 论文
  16. 华成英-模拟电子技术P8 放大电路的分析方法 讨论题目
  17. 强大的Android参数模拟器,自由修改手机型号、SDK版本号等信息
  18. 新疆计算机二级vb 试题,2013新疆维吾尔自治区WORD全国计算机等级考试二级VB试题及答案...
  19. 世界500强面试题(趣味智力测试题)
  20. 2012服务器系统有什么版本的,Windows server 2012操作系统有哪几个版本

热门文章

  1. Hibernate中HQL函数汇总及其说明
  2. 组策略部署软件----将部署的软件分类
  3. 瑞星:ATM出现漏洞 银行:哪有这回事?
  4. 限定filesize的数据泵导入导出操作案例
  5. js 获取字符串中的中文
  6. Swift_错误处理
  7. python requests模块使用
  8. 雷达装置 (POJ 1328/ codevs 2625)题解
  9. OpenGL硬件加速指南
  10. Android Dialog 全屏、Dialog 底部显示