易错的地方:

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

总的笔记:

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

三种方式:

//实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
@Test   //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
public void testFileReaderWriter() throws IOException {
FileReader fr=null;
FileWriter fw=null;
File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest=new File("D:\\SZS文件夹\\IO\\复制的hello.txt");
try {
fr=new FileReader(src);
fw=new FileWriter(dest);
char[] ch= new char[10];
int len=0;
while((len=fr.read(ch))!=-1 ){
fw.write(ch);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
fr.close();
fw.close();
}
}
//实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
 @Test  //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
public void testBufferStream() throws IOException{
//①声明②加载字节流,缓冲流③read/write④close缓冲流)
File src=new File("D:\\SZS文件夹\\IO\\TIM截图20181017161349.png");
File dest=new File("D:\\SZS文件夹\\IO\\复制的TIM截图.png");
FileInputStream fis= new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest); BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos); byte[] b=new byte[1024];
int len;
while((len=bis.read(b))!=-1)
bos.write(b,0,len); bis.close();
bos.close();
}
//实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
  @Test  //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
public void testBufferedReaderWriter() throws IOException{
File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest=new File("D:\\SZS文件夹\\IO\\BufferedReaderWriter复制的hello.txt");
//①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流)
FileReader fis= new FileReader(src);
FileWriter fos = new FileWriter(dest); BufferedReader bs=new BufferedReader(fis);
BufferedWriter bw=new BufferedWriter(fos); char[] b=new char[1024];
int len;
while((len=bs.read(b))!= -1) {
bw.write(b,0,len);
}
bw.flush();
bs.close();
bs.close();
}
学习视频地址: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. Opencv官方例程简介

    opencv sample文件夹例程 No1. adaptiveskindetector.cpp 利用HSV空间的色调信息的皮肤检测,背景不能有太多与肤色相似的颜色.效果不是特别好. No2. bag ...

  2. Mac brew命令踩坑

    brew是mac上的在线包管理软件,相当于linux apt以及yum包管理工具 1.取消brew的自动更新(https://blog.csdn.net/yf9595/article/details/ ...

  3. 多文件上传,添加重复文件时无法触发onchange事件。

    <input type="file" id="upload" @change="getFile($event)" multiple=& ...

  4. 1.1Spring Boot 环境配置和常用注解

    Spring Boot常用注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一 ...

  5. VC++:创建,调用MFC动态链接库(扩展DLL)

    概述 DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类. 仓库的发展史经历了"无库" ---& ...

  6. time() 函数时间不同步问题

    1.时区设置问题 处理方法:编辑php.ini  搜索 “timezone” 改写为 PRC 时区 2.服务器时间不同步 处理方法:设置服务器时间和本地时间进行同步

  7. yii2中通过migration创建数据表

    ### yii2中通过migration创建数据表 准备工作: 1.首先保证php写入了环境变量 2.在项目内创建migrations目录(base版的需要手动创建) 3.配置文件中正确配置了数据库信 ...

  8. Java中 final和static解析

    一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理 ...

  9. 利用Python进行数据分析_Numpy_基础_3

    通用函数:快速的元素级数组函数 通用函数,是指对数组中的数据执行元素级运算的函数:接受一个或多个标量值,并产生一个或多个标量值. sqrt 求平方根 np.sqrt(arr) exp 计算各元素指数 ...

  10. Redis的AOF重写脚本

    手动触发 每天定期的去执行一次 写了一个脚本 bgrewriteaof.sh 内容如下: #!/bin/bash /usr/local/redis/redis-cli -p 6379 -h 127.0 ...