易错的地方:

/** 出错的地方:
* 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. VS2010 如何在调试的时候输入参数

    VS2010 如何在调试的时候输入参数 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 很明显,好多算法程序实现的时候提供的例程都是需要在命令行中输入参数,比 ...

  2. JS通过ActiveX读写ini配置文件

    String.prototype.trim = function(){ return this.replace(/(^\s+)|(\s+$)/g, ''); }; IniConfig = functi ...

  3. [转帖]如何禁止VirtualBox虚拟机和物理机之间的时间同步

    如何禁止VirtualBox虚拟机和物理机之间的时间同步 乐者为王 2014-11-02 706 阅读   http://ju.outofmemory.cn/entry/97301 验证了下 修改注册 ...

  4. 【C++札记】命名空间(namespace)

    介绍 命名空间可以解决程序中的同名冲突,尤其大型项目多人开发中经常用到.比如我们使用C++的标准输出std::cout就使用了std命名空间. 使用作用域符:: #include <iostre ...

  5. html5 外链式实现加减乘除

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. c++ string类型成员变量在调用构造函数后未能正确赋值

    struct RelItem{ string segName; Elf32_Rel* rel; string relName; RelItem(string seg, int addr, string ...

  7. python读写文件的操作

    编程语言中,我们经常会和文件和文件夹打交道,这篇文章主要讲的是Python中,读写文件的常用操作: 一.打开文件 openFile = open('../Files/exampleFile.txt', ...

  8. eclipse New菜单项的显示问题

    设置自己想要的New菜单 链接:http://www.cnblogs.com/shindo/p/7089141.html

  9. JVM GC 算法原理(转)

    出处: https://mp.weixin.qq.com/s/IfUFuwn8dsvMIhTS3V01FA 对于JVM的垃圾收集(GC),这是一个作为Java开发者必须了解的内容,那么,我们需要去了解 ...

  10. PHP的 parse_ini_file 解析配置文件

    解析配置文件: parse_ini_file 类似解析php.ini文件样 配置文件内容如下: Example #1 sample.ini 的内容 ; This is a sample configu ...