易错的地方:

/** 出错的地方:
* 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. 删除Excel表格中一堆英文中的汉字

    昨天需要处理一个Excel文件,删除一堆英文里的汉字,开始搜了下方法,没找到,然后手动一个多小时,弄了一半吧也就,结果电脑卡了,忘了保存,就白做了...不知道为啥这次没有自动保存,所以,重要的事说三遍 ...

  2. win7下exe文件设置为开机启动

    如何将自己的exe程序设置为开机自启动 如何将自己的exe程序设置为开机自启动 将自己的exe程序设置为开机自启动话不多说,直接看 首先1:cmd—>regedit 其次找到下面的路径就可以:( ...

  3. javascript判断碰撞检测

    javascript判断碰撞检测 点与矩形的碰撞检测 <pre> /** * * @param x1 点 * @param y1 点 * @param x2 矩形view x * @par ...

  4. python for循环 - python基础入门(11)

    在python开发中,除了前篇文章介绍的while循环还有一个for循环也经常使用,两者使用都是大同小异,for循环的使用相对于while循环更加灵活,下面我们一起来了解下具体区别. 一.for 循环 ...

  5. K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署

    摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...

  6. 3种PHP实现数据采集的方法

    https://www.php.cn/php-weizijiaocheng-387992.html

  7. mac OS 安装qt环境

    先安装xcode,然后从官网下载dmg安装包安装即可,这里主要出现一个问题就是创建的工程没法编译,提示没有构建包(kit) 要安装command line tool才行. 在命令行中输入: xcode ...

  8. 处理bugs心法

    1. 前提 第一层:遇到异常首先必须告诉自己,冷静,不要慌.(一看到Bug就心慌,那么武功就施展不了了) 2. 入门级 第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出,Junit输出,页 ...

  9. (七)springmvc之ModelAttribute注解

    一.没有使用@ModelAttribute的Controller方法. @RequestMapping("/save") public String save(User user) ...

  10. CCF 201809-1 卖菜

    题目: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己 ...