文章目录

  • IO流的分类:
  • 字节流和字符流的区别:
  • 详析
    • InputStream子类:
    • OutputStream子类:
    • FilterInputStream子类:
    • FilterOutputStream子类:

IO流的分类:

根据处理数据类型的不同分为:字节流和字符流;
根据数据流向不同分为:输入流和输出流

字节流和字符流的区别:

  • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节;
  • 处理对象不同:字节流能处理所有类型的数据(如图片,字符,音频等),而字符流只能处理字符类型的数据;
  • 在同样使用缓冲区的前提下,字节流比字符流的效率稍微高一点。对于频繁操作且每次输入输出的数据量较小时,使用缓冲区可以带来明显的效率提升。
  • 从源码可以看出来,字节流默认不使用缓冲区,而字符流内部使用了缓冲区。

所以,处理纯文本数据,优先考虑字符流,否则使用字节流;

详析

在Java 中,文件流负责操作文件,包括读取和写入;

FileInputStream 文件的字节输入流,父类 InputStream
FileOutputStream 文件的字节输出流,父类 OutputStream
FileReader 文件的字符输入流,父类 Reader
FileWriter 文件的字符输出流,父类 Writer

InputStream子类:

ByteArrayInputStream:将内存的缓冲区当作数据源输入;
StringBufferInputStream:将String转换成InputStream;
FileInputStream:从本地文件中读取数据;
PipedInputStream:资源管道的输入端,也是PipedOutputStream的输入源;
SequenceInputStream:能够将2个或者以上的InputStream合并成一个单一的InputStream;
FileterInputStream:为文件资源读取提供筛选功能;

OutputStream子类:

OutputStream及其子类的作用是用来表示数据输出将要去向的目标,比如:文件、资源管道、字节数组等。OutputStream也是因不同的目标有不同的子类:

ByteArrayOutputStream:在内存中创建缓冲区,所有输出的数据都会暂存在缓冲区中;
FileOutputStream:将数据写出到文件中;
PipedOutputStream:作为PipedInputStream的输出端,与PipedInputStream一起实现资源的“管道化”;
FileterOutputStream:为文件资源写出提供筛选功能;

FilterInputStream子类:

DataInputStream:用于从流中读取基本类型的数据,比如:char、int、long等,往往与DataOutputStream配合使用;
BufferedInputStream:代表“缓冲区”,可以将数据暂存在缓冲区,使用它可以防止每次读取都进行实际的写操作;
LineNumberInputStream:追踪输入流中的行号,可做调试用;
PushbackInputStream:能弹出一个字节的缓冲区,能够将文件的最后一个字符返回(操作系统使用-1表示磁盘文件的结尾标记),通常作为编译器的扫描器,往往被编译器调用;

FilterOutputStream子类:

DataOutputStream:用于从流中写出基本类型的数据,比如:char、int、long等,往往与DataInputStream配合使用;
PrintStream:用于格式化输出,比如:java 的运行控制台打印;能够与DataOutputStream相互配合使用:DataOutputStream负责数据的存储,PrintStream负责数据的显示;
BufferedOutputStream:代表“缓冲区”,可以将数据暂存在缓冲区,使用它可以防止每次都进行实际的写操作;可以使用flush()方法将缓冲区数据一次性写出;

参考

字节流、字符流、缓冲流相关推荐

  1. java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

    1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.sepa ...

  2. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  3. day27-API-java流的三大分类,常用的流(文件流,对象流, 缓冲流, 转换流, PW)

    文章目录 一. java流的三大类 1. 输出流和输入流 2. 字节流和字符流 3. 节点流和处理流 二. 字节流 1. 文件流 FIS和FOS 1.1 文件输出流:FileOutputStream ...

  4. Java IO流 - 缓冲流的详细使用介绍

    文章目录 缓冲流 缓冲流概述 字节缓冲流 字符缓存流 缓冲流 缓冲流概述 缓冲流介绍: 缓冲流也称为高效流.或者高级流.之前学习的字节流和字符流可以称为原始流. 作用:缓冲流自带缓冲区.可以提高原始字 ...

  5. Java IO流 处理流--缓冲流(Buffering)

    1. 缓冲流(Buffering) 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法.Java提供了四种缓冲流,常用构造方 ...

  6. Java基础---认识IO流---字节流、字符流---缓冲流---转换流

    一.认识IO流 I/O就是用于设备之间进行数据交互的对象所属的类型 IO流的体系结构:根据分类,有四种流对象类型 字节流:可以直接操作字节信息的流对象 字节输入流:InputStream 字节输出流: ...

  7. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  8. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  9. io包下 文件类 字节流 字符流 缓冲流 转换流 序列化流 打印流

    第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.2 构造方法 public File(String pat ...

  10. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...

    File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...

最新文章

  1. 25 进程同步之Event
  2. Publishing failed with multiple errors和Timeout waiting for Tomcat v5.5的解决方法
  3. python中location_使用python请求模块时的LocationValueError
  4. mysql核心内幕_MySQL核心内幕
  5. 20155207第十章课下测试补交
  6. 浏览器控件JxBrowser V6.14大版本发布 | 注入CSS
  7. 拼多多搜索API接口(关键词查询优惠券列表接口)
  8. 2021年法国经济发展研究报告
  9. 在WPS中提取出的照片在哪找_教你使用 Excel 快速更换照片背景底色
  10. 在VMware WorkStation中安装Windows Server 2016
  11. linux dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
  12. Kafka 安装、使用
  13. Latex如何插入多个图片,实现并排排列或者多行多列排列
  14. 吉林大学计算机动画与游戏导师,吉林大学计算机 导师联系方式
  15. gcc官网以及各个版本下载地址
  16. T6企业管理软件 7.1 - 登录账套提示“此账套的行业性质与科目设置中的分类不符,请调整”
  17. Word,PDF,PPT,TXT之间的转换方法
  18. Linux配置ntp时间同步服务器(全)No association ID's returned
  19. 数据库回滚(rollback)和撤销(undo)的区别
  20. 微信公众平台开发入门教程(资源来自网络)

热门文章

  1. acm c语言指针,c语言 ACM一道 很简单的
  2. 倒计时操作 CountDownTimer
  3. 其实一切与游戏无关--yy笔录+转载网络游戏服务器设计
  4. 普通人修谱必须读的三本书,最后一本市场买不到
  5. Linux操作系统账号密码失效检测
  6. Python六大基本数据类型
  7. java实现floyd统计天津地铁的站点距离
  8. 这回又来个 ionic2 的微信支付 (遇到一些莫名的BUG)
  9. Python量化投资——mplfinance最佳实践:动态交互式高级K线图(蜡烛图)【源码+详解】
  10. MySQL的7种JOIN表连接结果集,你了解几个?搞懂仅需1张图