问:字节流与字符流有什么区别?
答:计算机中的一切最终都是以二进制字节形式存在的,对于我们经常操作的字符串,在写入时其实都是先将字符转成对应的字节,然后将字节写入到输出流,在读取时其实都是先读到的是字节,然后将字节直接使用或者转换为字符给我们使用。由于对于字节和字符两种操作的需求比较广泛,所以 Java 专门提供了字符流与字节流相关IO类。

对于程序运行的底层设备来说永远都只接受字节数据,所以当我们往设备写数据时无论是字节还是字符最终都是写的字节流。字符流是字节流的包装类,所以当我们将字符流向字节流转换时要注意编码问题(因为字符串转成字节数组的实质是转成该字符串的某种字节编码)。

字符流和字节流的使用非常相似,但是实际上字节流的操作不会经过缓冲区(内存)而是直接操作文本本身的,而字符流的操作会先经过缓冲区(内存)然后通过缓冲区再操作文件。

问:什么是缓冲区?有什么作用?

答:缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性能。
对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作。

问:如何选择字节流和字符流?
答:如果是文本文件通常使用字符流,而像视频,图片,音频等文件都是二进制数据使用字节流。当然文本文件也可以使用字节流来操作,字节流更通用。

如果只是复制纯文本文件不做显示操作,哪个流都可以,如果要显示纯文本就用字符流。

问:为什么对于字符流中都有flush方法,但是字节流中没有?
字节流的操作不会经过缓冲区(内存)而是直接操作文本本身的,而字符流的操作会先经过缓冲区(内存)然后通过缓冲区再操作文件。

IO流如何选择字节流和字符流??相关推荐

  1. java字节流分为_Java的流操作分为字节流和字符流两种。

    Java的流操作分为字节流和字符流两种.           1. 字节流  所有的读操作都继承自一个公共超类java.io.InputStream类.  所有的写操作都继承自一个公共超类java.i ...

  2. java字节流分为_Java文件流可分为字节流和字符流。

    [单选题]TCP 和 UDP 协议的相似之处是 () [单选题]That was the first time I ______ French with a foreigner. [判断题] [判断题 ...

  3. JavaSE进阶26 - IO流概述、字节流、字符流、转换流、缓冲流

    目录 IO概述 FileInputStream的使用 FileOutputStream使用 文件复制 文件的复制原理 代码 FileReader FileWriter 复制普通文本文件 Buffere ...

  4. Java语言基础(IO流2(字节流、字符流))

    Java语言基础 IO流 字节流 可以读写任何类型的文件,比如:音频.视频 .文本文件 字节流的抽象基类: 字节输入流:InputStream 字节输出流:OutputStream 我们发现Input ...

  5. 转换流(将字节流转换为字符流)

    1.将字节流转换为字符流 (1)名称是前面四种抽象类的组合 (2)功能都是将字节流转换成字符流,但是没有将字符流转换成字节流的类,因为,已经获得了字符流,根本没有必要转换成字节流 (3)InputSt ...

  6. java中什么是字节流和字符流_java中字节流与字符流的区别是什么

    字节(Byte)是进行io操作的基本数据单位,在程序进行字节数据输出时可以使用OutputStream类完成 此类定义如下: public abstract class OutputStream ex ...

  7. Java I/O流(File、字节流、字符流、过滤流、对象流)详解

    File以及I/O流 一.File类的使用 java.io.File类 代表硬盘上的一个文件或者目录 java.io.File类作用: 每个File类的对象表示一个磁盘文件或目录,其对象属性中包含了文 ...

  8. java 字符流图片_java 字节流、字符流(复制图片、复制文本)

    1.File 1)构造方法 2)创建 3)判断.获取 4)删除 2.字节流 1)字节流写数据的3种方式 FileOutputStream fos = new FileOutputStream(&quo ...

  9. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

最新文章

  1. js基础语法知识(数组/对象/日期)
  2. 图:BFS(深度优先搜索)图解分析代码实现
  3. Spark HistoryServer日志解析清理异常
  4. 可靠消息最终一致性设计_如何最终启动您的设计产品组合
  5. 这份1307页Android面试全套真题解析,源码+原理+手写框架
  6. python-日志模块-logging
  7. 【Elasticsearch】基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化
  8. Python 3.6+Django开发入门小案例(自动变化的问候)完整步骤
  9. bat 中 for 的使用 帮助文档 中文版
  10. 二进制GCD算法解析
  11. matlab做弹簧阻尼系统,第5章 弹簧阻尼系统建模.ppt
  12. 互联网产品经理必备文档介绍
  13. 网站被劫持怎么办?别着急看完这篇文章您就知道如何应对了!
  14. Linux-磁盘扩容(逻辑卷方式)
  15. 零基础入门WordPress安装详细教程(图文)
  16. c语言程序设计结论,C语言程序设计报告.docx
  17. 【渝粤题库】陕西师范大学202201 社区管理 作业
  18. [技术] 【技术支持】深度解剖S60内部资料,6600为例
  19. “五•一”黄金周市民旅游指南
  20. 每个人的青春都有一条弯路,你要自己走

热门文章

  1. 1.python实现二进制补码求原码
  2. 测量开关电源纹波的方法
  3. 医药保健行业crm系统有何特色
  4. 自学C语言/C++到底难在哪里?
  5. python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发
  6. 【AIoT库】专业权威、高含金量的2021“物联之星”年度评选正式启动,500+物联网企业竞相追逐
  7. “耽改”热中的“腐文化”!为我开启创意者和教育者的,Adobe国际认证旅程
  8. OPPO R11t_R11st_R11Plust_R11Pluskt_R11sPlust解移动锁
  9. Matlab安装硬件支持包
  10. nCode:DesignLife案例教程十四