复制过程不同:
  字符复制要经过IO流向字符的转化的解码过程,解码完成后,再进行逆过程进行编码形成输出IO流,最终写入目标IO(磁盘或网络);
  字节流复制,不必关注要复制的内容,数据直接以字节的形式进行传输,不用解码编码;
  文件夹复制,相对比较复杂,一般要递归遍历里面的目录结构进行操作,有文件夹的创建文件夹,有文件的进行字节流复制。
虽然字节流复制一般都不会用到,但是,在转码复制的时候,恰好是最适合的。
比如,把GBK编码的源文件转换成UTF-8编码的文件。

解决方案 »

  1.   

    字节流字符流最大的不同就是:字符流内部封装了各种编码表,比如GBK,UTF-8等等。在进行复制文件时,在最底层,两者都是对字节数据的读写,但是字符流在读写字节数据时,首先要进行查表动作,将读取到的字节转换成相对应的字符,也就是所谓的解码,并将字符存入字符流内部的字符数组中(其实就是缓存),在随后进行写入操作时,又将存入字符数组的字符通过查表,转换成字节,也就是编码,将字节写入文件中(也就是硬盘);而字节流则没有查表动作,因为,无论是文本文件,mp3文件,还是视频文件,硬盘上存储的都是字节数据,因此,字节流就可以直接读取,并进行写入操作。我也是初学,如有谬误,请轻拍~
      

  2.   

    这个问题,其实很简单的;无法就是搞清楚IO字节流和字符流之间的区别。
    1、字节流是由字节组成的,字符流是由字符组成的.Java里字符由两个字节组成;
    2、字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
    但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。
    3、实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件
    4、就是上面有人提到的 字节流是采用2进制传输的、而字符流是采用UTF-8之类的传输的。实际上 字符流本身也是字节流 只不过在字节流的多加了功能。
    希望对你有帮助。。