为了记录所学的知识,就简单的进行描述,后续再补充。

什么是字节流呢?
字节流是基于二进制的万能流,对于任何类型的文件通过字节流都可以对其进行读写。字节流使用了装饰设计模式。

字节流输入流(InputStream)结构图:

字节输出流(OutputStream)结构图:

什么是字符流:

字符流只能够读取文本文件,不能够读取流媒体文件,但理论上读取的效率高于字节流的效率

字符输入流结构图:

字符输出流结构图:

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(neInputStreamReader(System.in));

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给 write() 方法的字符没有缓冲。

为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:
 Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

转载于:https://www.cnblogs.com/javacatalina/p/6624265.html

输入输出(I/O)流。相关推荐

  1. c++语言文件流,C++ IO类、文件输入输出、string流详细讲解

    新的C++标准中有三分之二的内容都是描述标准库.接下来重点学习其中几种核心库设施,这些是应该熟练掌握的. 标准库的核心是很多容器类(顺序容器和关联容器等)和一簇泛型算法(该类算法通常在顺序容器一定范围 ...

  2. Java知多少(66)输入输出(IO)和流的概述

    输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作.几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等.通过输入和输出操作可以从外界接收信息, ...

  3. 【C++】IO库 : IO类,文件输入输出,string流

    前面已经在用的IO库设施 istream:输入流类型,提供输入操作. ostream:输出流类型,提供输出操作 cin:一个istream对象,从标准输入读取数据. cout:一个ostream对象, ...

  4. java 输出流转输入流_输入输出--Java IO流

    O流01 javaIO流概述 ①Java IO即Java 输入输出系统 根据针对数据类型的处理,分为字节流和字符流: 字节流中包含输入流[InputStream]和输出流[OutputStream]两 ...

  5. Java输入输出(IO)和流的基本概念以及几种方法

    Java流的概念 IO流继承关系,如图所示:(了解) 流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动.按照数据的传输方向,流可分为输入流与输出流.Java语言里的流序列中的数据既可 ...

  6. java中的输入输出流概念_java输入输出--I/O流的概念和划分

    理解数据流 数据流(Stream)是一组有顺序的,有起点的,有终点的字节集合,是对输入和输出的总称和抽象. 一般地,数据流分为 输入流(InputStream)和输出流(OutputStream).输 ...

  7. 文件输入输出和string流

    文件流: 头文件fstream定义了三个类型:ifstream读取,ofstream写入,fstream读取和写入,其继承了iostream.当要读写文件时,把文件流对象与文件关联起来,每个文件流都定 ...

  8. java IO(输入输出) 字节缓冲流

    //文件复制 package zhi_jie_liu;import java.io.*;public class Example04 {public static void main(String[] ...

  9. java 流的概念_举例讲解Java中的Stream流概念

    1.基本的输入流和输出流 流是 Java 中最重要的基本概念之一.文件读写.网络收发.进程通信,几乎所有需要输入输出的地方,都要用到流. 流是做什么用的呢?就是做输入输出用的.为什么输入输出要用&qu ...

最新文章

  1. CoordinatorLayout 的jar包位置
  2. 栈——用链表实现栈操作
  3. c语言期末作业自己设计个小程序,帮看一个小程序吧,c语言期末考…求求各位大神了...
  4. CSS3的弹性盒子flex详解(1)
  5. 第二阶段 工作总结 05
  6. RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer) [转]
  7. [转载] Python利用pandas处理Excel数据的应用
  8. 安卓11及以上adb命令将冰箱设置为设备管理员
  9. 计算机表格快捷键,Excel表格快捷键与功能键大全
  10. 函数论_E.C.Tichmarsh_Page 4 级数一致收敛的魏尔斯特拉斯 M-判别法 的推广
  11. python阈值计算_基于Python的阈值分割算法实现(二)
  12. c语言中的inv是什么缩写,INV(inv是什么的缩写)
  13. 全球家务机器人发展现状及未来趋势
  14. SQLite源代码分析----------分词器③
  15. 看机器学习精准预测:谁是iphone的忠实玩家?
  16. Pytorch中Parameter的打印和修改
  17. 连锁店管理系统如何助力零售业
  18. 我也不知道说什么....
  19. 无线mesh网络(多跳(multi-hop)网络)
  20. ubuntu 启动遭遇 no such partition     grub rescue处理方法

热门文章

  1. 【重识 HTML + CSS】Photoshop 简单使用
  2. 怎样更改计算机ip用户名,无法修改系统IP地址
  3. 企业数据分析,搞定这3个重点事半功倍!
  4. 小米装android4.4,在VM已安装Android4.4 连接小米手环 网络设置
  5. php 写二维数组,php二维数组怎么写
  6. vue设置金额和时间格式(团购倒计时下次一定)
  7. oracle result_cache_max_size,当设置RESULT_CACHE_MAX_SIZE参数并且重启过database后,Query Result Cache 还是被禁用的。...
  8. oracle time model,通过案例学调优之--OracleTimeModel(时间模型)
  9. python编程语言继承_Python 面向对象编程——继承和多态
  10. cython 安装升级_Anaconda安装pytorch,torchvision和 cython