Java——IO框架
IO框架
- 流:内存与存储设备之间传输数据的通道
- 分类
- 流向
- 输入流:从硬盘等外设到内存的流
- 输出流:从内存到硬盘等外设的流
- 传输单位
- 字节流(抽象类InputStream,OutputStream):以字节为单位,可以读写任何数据
- 字符流(抽象类Reader,Writer):以字符为单位,只能读写文本数据
- 功能
- 节点流:一般的流
- 过滤流FilterInputStream,FilterOutputStream:在节点流的基础上增强功能
- 流向
字节流
- 字节流的父类InputStream,OutputStream,并且是抽象类,读取文件和写入文件一般用FileInput/OutputStream
- 字节缓冲流:BufferedInputStream,BufferedInputStream
- 是过滤流的子类,所以是对节点流的功能的增强,需要用节点流(大多数情况都是FileInput/OutputStream)为基础来创建字节缓冲流
- 自带默认大小为8k的缓冲区
- 字节输出缓冲流的flush方法,是将缓冲区的内容写进硬盘
- 字节输出缓冲流的close方法自动执行flush方法
- 对象流:ObjectInputStream,ObjectOutputStream
- 主要方法:readObject,writeObject(Object obj)
- 从内存中向硬盘写入对象称为序列化,从硬盘中读出称为反序列化
- 增强了三个功能
- 缓冲区功能
- 读写八种基本数据类型和字符串功能
- 读写对象的功能
- ObjectOutputStream中要写入硬盘的对象的类必须实现可序列化接口(Serializable,只是一个标识性接口,代表可以序列化),类中对象的属性也要实现可序列化接口(比如类中属性也为类对象)
- 实现序列化接口的类最好声明一个serialVersionUID,序列化版本号id,保证序列化和反序列化的类是同一个类
- 使用transient(瞬间的)修饰的属性,不能被序列化
- 静态属性不能被序列化
- 序列化多个对象,可以借助集合实现
字符流
- 字符编码:
- 国际通用UTF-8,几乎收录了所有国家的常用字符,长度可变,可以是1,2,3字节
- 国内使用GBK
- 当编码方式与解码方式不一致时,会出现乱码,即写文件和读文件要用相同的编码方式
- 字符流的父类Reader(主要方法read),Writer(主要方法write,append,flush),并且是抽象类,读取文件和写入文件一般用FileReader/Writer
- 字符缓冲流:BufferedReader,BufferedWriter
- 自带8k缓冲区,高效读写
- 支持输入换行符
- 可一次写一行,读一行
- 重要方法,readLine,newLine
- 是过滤流的子类,所以是对节点流的功能的增强,需要用节点流(大多数情况都是FileReader/Writer)为基础来创建字节缓冲流
特殊的流
- PrintWriter:打印用的,方法大多是print开头的,不需要节点流做基础
- 转换流:又叫桥转换流,InputStreamReader,OutputStreamWriter
- 可将字节流转化为字符流
- 可以设置字符的编码方式(之前的类使用的是默认编码方式)
Java——IO框架的更多相关文章
- java IO框架分析
jave.io框架 2010-11-10 22:18:34| 分类: 默认分类|举报|字号 订阅 可从IO的类层次,IO框架的设计模式来论述. 总体来说,IO可以分为字节流和字符流,不同在于 ...
- java IO 框架图
- JAVA IO 序列化与设计模式
➠更多技术干货请戳:听云博客 序列化 什么是序列化 序列化:保存对象的状态 反序列化:读取保存对象的状态 序列化和序列化是Java提供的一种保存恢复对象状态的机制 序列化有什么用 将数据保存到文件或数 ...
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- Java基础之IO框架
一.流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. ...
- java.io包的总体框架图(转)
原文链接:java.io包的总体框架图, 便于记忆!
- Java三大框架之——Hibernate关联映射与级联操作
什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...
- java 持久框架mybatis的初步学习
什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...
- (转)Java集合框架:HashMap
来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...
随机推荐
- Shiro-721反序列化漏洞
漏洞名称 Shiro-721(Apache Shiro Padding Oracle Attack)反序列化 利用条件 Apache Shiro < 1.4.2 漏洞原理 Apache Shir ...
- [C++标准模板库:自修教程与参考手册]关于vector
什么是vector 可以这样认为,vector就是一个动态的数组,其中的元素必须具备assignable(可赋值)和copyable(可拷贝)两个性质. vector的一些重要的性质 vector支持 ...
- Ubuntu 22.04 BigSur 美化
安装 tweaks sudo apt update && sudo apt upgrade sudo apt install gnome-tweaks gnome-shell-exte ...
- Three.js 进阶之旅:新春特典-Rabbit craft go 🐇
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 兔年到了,祝大家身体健,康万事顺利.本文内容作为兔年新春纪念页面,将使用 ...
- 图文并茂使用VUE+Quasar CLI开发和构建PWA,registerServiceWorker介绍
看文档 文档地址:Preparation for PWA 1.将PWA模式添加到我们的Quasar项目中: npx quasar mode add pwa 我们看一下有哪些变化 向Quasar项目添加 ...
- SpringCloud————>了解什么是微服务技术
SpringCloud是Spring为微服务架构思想做的一个一站式实现.从某种程度是可以简单的理解为,微服务是一个概念.一个项目开发的架构思想.SpringCloud是微服务架构的一种java实现. ...
- IOS(XCode)嵌入Unity模块
今天下午明明要弄明白Android Studio出AAR给Unity用的,结果发现好多问题,小黑心里苦啊,整不明白了呀,让我做Unity吧... 好了,废话不给大家多说了,今天小黑给大家带来,如何在I ...
- 【分析笔记】展讯 RDA8810PL 平台 Camera 驱动分析和移植(Android 4.4 )
前言概述 因以下原因,导致不得不通过代码分析来学习如何在该平台下进行摄像头驱动移植 香橙派开发商(迅龙软件)仅提供能跑起来的源代码.固件,以及简单的编译文档,不提供其它技术支持 baidu.googl ...
- 复杂环境下ocr与印章识别技术理解及研发趋势
引言 随着社会经济的发展,印章作为企事业单位.社会团体.政府部门乃至国家的一种具有法律意义的标志和证据,在现代社会生活中发挥着重要作用.随着现代商务活动的不断发展,企业在业务开展的过程中通常会涉及大量 ...
- python学习day 02
昨日内容回顾 typora软件 1.作为一款逐年火爆的文本编辑器,深受IT行业的喜爱. 2.下载与安装: windows用群里发的软件 macOS下载地址:https://mac.qdrayst.co ...