部分摘自http://blog.csdn.net/cynhafa/article/details/6882061

所有的文件在存储和传输时都是以字节(byte)为单位进行的,包括图片等都是按字节的方式存储的,而字符只有在内存中才会形成,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。所以在开发中,字节流使用较为广泛
     字节流主要用来处理字节或二进制对象
        字符流主要用来处理字符或字符串
     字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串
     字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以
     字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点
     字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
    在字符流的操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。
     字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的;但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化,这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联,在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的
     在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang,而在字符流转化为字节流时,实际上是String转化为byte[]时,byte[]  String.getBytes(String charsetName)也是一样的道理

对于我们常用的GBK中,英文是占用1个字节,中文是2个
对于UTF-8,英文是1个,中文是3个
对于Unicode,英文中文都是2个

java字节流与字符流的区别编码缓冲相关推荐

  1. java字符流实际上也是字节,[Java教程]Java字节流与字符流的区别

    [Java教程]Java字节流与字符流的区别 0 2017-05-22 12:00:42 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身 ...

  2. 1.8 Java字节流和字符流的区别,如何区分输入流和输出流?

    Java字节流和字符流的区别 首先我们先大概总结一下前面学习的内容,可分为以下几点: 以 Stream 结尾都是字节流,Reader 和 Writer 结尾都是字符流. InputStream 是所有 ...

  3. Java字节流和字符流的区别?

    字符流:就是在字节流的基础上,加上编码,形成的数据流 字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流. 程序中所有的数据都是以流的方式进行传输或保存的,字 ...

  4. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...

  5. Java字节流与字符流的区别和执行效率

    区别: 1.字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 2.字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是 ...

  6. java字节流转字符串_字节流与字符流的区别及相互转换

    先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形 ...

  7. Java I/O之字节流与字符流的区别

    字节流与字符流的区别: 上图解析: 字节输出流是直接把字节数据写出到磁盘或其他设备上,而字符输出流会先把字符输出流按一定的编码规则进行编码成二进制的字节输出流再写出到磁盘或其他设备上. 字节输入流每次 ...

  8. Java字节流和字符流的优缺点_字节流与字符流的区别用字节流好还是用字符流好?...

    字节流: (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据. (B)FileOutputStream(FileDescriptor) ...

  9. java精选面试题---字节流和字符流的区别

    字节流和字符流的区别 字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节 数是两个,在 UTF-8 码表中是 3 个字节)时.先去查指定的编码表,将查 ...

最新文章

  1. 文献学习(part17)--Correlation Adaptive Subspace Segmentation by Trace Lasso
  2. java sqlmap_sqlmap 学习指南
  3. 触发器与约束的适用条件
  4. webservice的原理及概念
  5. 【HTML】建站成功默认页面
  6. 16软件1班安卓第一学期学习总结
  7. day6--pandas
  8. 如果你这样回答“线程安全”,面试官都会对你刮目相看
  9. 二次方程c语言计算器,解方程计算器
  10. 跨平台数据库ODB实战3-Person类的存储、查询、更新和删除
  11. 集合易支付源码完美版
  12. 一堂难忘的计算机课作文,难忘的信息课作文
  13. 【Nuxt】nuxtjs脚手架的安装及问题解决
  14. 用java编写球体的体积,编写一个程序,提示用户输入球体的半径并打印其体积...
  15. 司法解释明确:不能仅以“出轨”为理由,请求离婚
  16. [转帖]彩色硬盘 关于西数硬盘 企业盘、黑盘、蓝盘、绿盘、红盘的区别
  17. Mybatis——类型处理器TypeHandler
  18. ARKit和SceneKit
  19. rviz_marker_绘制直线_矩形框
  20. 蚂蚁课堂视频笔记思维导图-3期 一、并发编程专题

热门文章

  1. 火车头过滤 css样式_HTML5和CSS3过滤器中的网络摄像头视频捕获
  2. scale实现页面缩放自适应
  3. 锐捷服务器无系统如何进pe,没有u盘怎么进入pe系统,网络启动进PE做系统教程...
  4. 微信墙如何搭建服务器地址,如何制作微信墙
  5. 缓存穿透,缓存击穿,缓存雪崩
  6. [leetcode] 质因数分解
  7. win10 telnet不是内部或外部命令(已解决)
  8. 扩充计算机内存是扩充什么,怎么增加电脑内存 三种方法让你电脑内存扩大
  9. 内容推荐Mahout
  10. C/C++中argv[ ]与argc内容解读//(涉及运用cmd)