字节流、字符流、缓冲流
文章目录
- 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()方法将缓冲区数据一次性写出;
参考
字节流、字符流、缓冲流相关推荐
- java IO之 File类+字节流 (输入输出 缓冲流 异常处理)
1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.sepa ...
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...
1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 ...
- day27-API-java流的三大分类,常用的流(文件流,对象流, 缓冲流, 转换流, PW)
文章目录 一. java流的三大类 1. 输出流和输入流 2. 字节流和字符流 3. 节点流和处理流 二. 字节流 1. 文件流 FIS和FOS 1.1 文件输出流:FileOutputStream ...
- Java IO流 - 缓冲流的详细使用介绍
文章目录 缓冲流 缓冲流概述 字节缓冲流 字符缓存流 缓冲流 缓冲流概述 缓冲流介绍: 缓冲流也称为高效流.或者高级流.之前学习的字节流和字符流可以称为原始流. 作用:缓冲流自带缓冲区.可以提高原始字 ...
- Java IO流 处理流--缓冲流(Buffering)
1. 缓冲流(Buffering) 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法.Java提供了四种缓冲流,常用构造方 ...
- Java基础---认识IO流---字节流、字符流---缓冲流---转换流
一.认识IO流 I/O就是用于设备之间进行数据交互的对象所属的类型 IO流的体系结构:根据分类,有四种流对象类型 字节流:可以直接操作字节信息的流对象 字节输入流:InputStream 字节输出流: ...
- java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- io包下 文件类 字节流 字符流 缓冲流 转换流 序列化流 打印流
第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.2 构造方法 public File(String pat ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...
最新文章
- 25 进程同步之Event
- Publishing failed with multiple errors和Timeout waiting for Tomcat v5.5的解决方法
- python中location_使用python请求模块时的LocationValueError
- mysql核心内幕_MySQL核心内幕
- 20155207第十章课下测试补交
- 浏览器控件JxBrowser V6.14大版本发布 | 注入CSS
- 拼多多搜索API接口(关键词查询优惠券列表接口)
- 2021年法国经济发展研究报告
- 在WPS中提取出的照片在哪找_教你使用 Excel 快速更换照片背景底色
- 在VMware WorkStation中安装Windows Server 2016
- linux dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
- Kafka 安装、使用
- Latex如何插入多个图片,实现并排排列或者多行多列排列
- 吉林大学计算机动画与游戏导师,吉林大学计算机 导师联系方式
- gcc官网以及各个版本下载地址
- T6企业管理软件 7.1 - 登录账套提示“此账套的行业性质与科目设置中的分类不符,请调整”
- Word,PDF,PPT,TXT之间的转换方法
- Linux配置ntp时间同步服务器(全)No association ID's returned
- 数据库回滚(rollback)和撤销(undo)的区别
- 微信公众平台开发入门教程(资源来自网络)