易错的地方:

  1. /** 出错的地方:
  2. * 1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
  3. * 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
  4. * 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
  5. * *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
  6. * * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
  7. */

总的笔记:

  1. /** 出错的地方:
  2. * 1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
  3. * 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
  4. * 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
  5. * *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
  6. * * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
  7. */
  8.  
  9. /**字符流处理步骤:
  10. * ①声明②加载地址③read/write④close流)
  11. *----------------------------------------------------------------------------
  12. * 缓冲流(处理流的一种,相较于加速之前的操作)
  13. * BufferedInputStream read()
  14. * BufferedOutputStream write(),flush():刷新一次,确保输出完
  15. * BufferedReader readLine(): 复制一行!
  16. * BufferedWriter flush() //刷新一次,确保输出完

三种方式:

  1. //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
  1. @Test //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
  2. public void testFileReaderWriter() throws IOException {
  3. FileReader fr=null;
  4. FileWriter fw=null;
  5. File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
  6. File dest=new File("D:\\SZS文件夹\\IO\\复制的hello.txt");
  7. try {
  8. fr=new FileReader(src);
  9. fw=new FileWriter(dest);
  10. char[] ch= new char[10];
  11. int len=0;
  12. while((len=fr.read(ch))!=-1 ){
  13. fw.write(ch);
  14. }
  15. } catch (FileNotFoundException e) {
  16. e.printStackTrace();
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }finally {
  20. fr.close();
  21. fw.close();
  22. }
  23. }
  1. //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
  1. @Test //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
  2. public void testBufferStream() throws IOException{
  3. //①声明②加载字节流,缓冲流③read/write④close缓冲流)
  4. File src=new File("D:\\SZS文件夹\\IO\\TIM截图20181017161349.png");
  5. File dest=new File("D:\\SZS文件夹\\IO\\复制的TIM截图.png");
  6. FileInputStream fis= new FileInputStream(src);
  7. FileOutputStream fos = new FileOutputStream(dest);
  8.  
  9. BufferedInputStream bis=new BufferedInputStream(fis);
  10. BufferedOutputStream bos=new BufferedOutputStream(fos);
  11.  
  12. byte[] b=new byte[1024];
  13. int len;
  14. while((len=bis.read(b))!=-1)
  15. bos.write(b,0,len);
  16.  
  17. bis.close();
  18. bos.close();
  19. }
  1. //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
  1. @Test //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
  2. public void testBufferedReaderWriter() throws IOException{
  3. File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
  4. File dest=new File("D:\\SZS文件夹\\IO\\BufferedReaderWriter复制的hello.txt");
  5. //①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流)
  6. FileReader fis= new FileReader(src);
  7. FileWriter fos = new FileWriter(dest);
  8.  
  9. BufferedReader bs=new BufferedReader(fis);
  10. BufferedWriter bw=new BufferedWriter(fos);
  11.  
  12. char[] b=new char[1024];
  13. int len;
  14. while((len=bs.read(b))!= -1) {
  15. bw.write(b,0,len);
  16. }
  17. bw.flush();
  18. bs.close();
  19. bs.close();
  20. }
  1. 学习视频地址:http://www.gulixueyuan.com/course/39/task/497/show

Java基础 FileReader-FileWriter / 缓冲字符输入输出流 / 缓冲字节输入输出流 三种方式 进行文本文件的复制的更多相关文章

  1. Java 7源码分析第13篇 - 字节输入输出流(1)

    上一篇介绍了关于字节输入输出流的Java类框架,同时也简单介绍了一下各个类的作用,下面就来具体看一下这些类是怎么实现这些功能的. 1.InputStream和OutputStream InputStr ...

  2. Java基础知识强化之IO流笔记30:字节流4种方式复制mp4并测试效率

    1. 需求:把e:\\哥有老婆.mp4 复制到当前项目目录下的copy.mp4中 字节流四种方式复制文件: • 基本字节流一次读写一个字节 • 基本字节流一次读写一个字节数组 • 高效字节流一次读写一 ...

  3. Java中从控制台输入的三种方式

    我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...

  4. django基础之day09,多对多创建数据表的三种方式

    多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...

  5. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

  6. Java修炼——文件字节输入输出流复制和缓冲流复制

    一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...

  7. java学习笔记IO之字节输入输出流

    IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类: 定义了一些共性的成员方法: 1.写入一个字节 void write(int b);//b表示字节 2.写入字 ...

  8. Java基础知识强化之IO流笔记62:三种方式实现键盘录入

    1. 三种方式实现键盘录入     System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式:  A:main方法的args接收参数.  java HelloWorld hello w ...

  9. java: InputStreamReader将字节的输入流变成字符的输入流,OutputStreamWriter将字符的输出流变成字节的输出流

    InputStreamReader:将字节的输入流变成字符的输入流, OutputStreamWriter:将字符的输出流变成字节的输出流 //将缓冲区的内容读取,可以一次读取 //可以接收键盘的输入 ...

随机推荐

  1. 物联网防火墙himqtt源码之MQTT协议分析

    物联网防火墙himqtt源码之MQTT协议分析 himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWall,C语言编写,采用epoll模式支持数十万 ...

  2. linux centos7 开启 mysql 3306 端口 外网访问 的实践

    第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...

  3. hdu 1106

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  4. docker安装详细步骤-centos7

    https://www.runoob.com/docker/centos-docker-install.html 一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.1 ...

  5. hdoj3336(kmp算法next数组的应用)

    题目链接:https://vjudge.net/problem/HDU-3336 题意:给定长为n(<=2e5)的字符串s,求s的每个前缀在s中出现的次数之和. 思路: 用dp[i]表示以s[i ...

  6. Appium 基于控件左滑操作

    def swipe_ele_left(self, ele, dur=800): """ 基于控件元素左滑操作 :param ele: 控件元素 :param dur: 在 ...

  7. java日志框架系列(5):logback框架appender详解

    1.appender 1.什么是appender Appender 是负责写记录事件的组件. Appender 必须实现接口“ch.qos.logback.core.Appender”.该接口的重要方 ...

  8. python笔记005-字符串-列表-元组

    目录 1 上次作业补充拓展... 1 1.1 进制转换... 1 1.2 类型判断... 1 2 今日学习内容... 2 2.1 格式化输出... 2 2.2 基本运算符... 2 2.2.1 算术运 ...

  9. c语言 运算器

    #include<stdio.h> #include<stdbool.h> void menu(){ printf("************************ ...

  10. nginx 设置开机启动

    设置nginx开机启动chkconfig --add /etc/init.d/nginx chkconfig nginx on