java——IO流整理(一)
一、基础
1.字节、字符
- 位(bit) :二进制中的一个1或0称为1位
- 字节(byte) :8个二进制位称为一个字节
- 字符 :一个自然符号称为字符。英文符号(1个字节)、中文符号(2个字节)
2.编码格式
- ASCII :有256字符组成,内部包含了对英文、符号及数字的定义
- GB2312 :扩展后的中文字符集。内部包含了2万多个中文字符
- ISO-8859-1 : 欧美字符集
- Unicode :包含了所有字符的字符集。内容有双字节组成
- Utf-8 : 包含了大部分字符的字符集。实际使用中应用比较广泛的字符集
二、IO
1.概述
IO是Input Output的缩写,表示输入与输出。IO按照不同的方式可以包含如下分类
- 流
文件在读取或传输过程中连续的内容就称为流。
2. 内容读取方式
字节流方式和字符流方式
3. 按照方向划分
输入流(从源到程序称为输入流)和输出流(从程序到目标源称为输出流)
2. 字节流方式处理
1.输入流
- FileInputStream :按照字节流方式对内容进行读取(不适用缓存)
- BufferedInputStream :按照字节方式对内容进行读取(使用了缓存)
- DataInputStream :按照类型对内容进行读取
- ObjectInputStream :按照对象的类型进行数据的读取(反序列化过程中必须使用)
- ByteArrayInputStream : 提供一个byte型的输入缓冲区
2.输出流
- FileOutputStream :对内容进行输出(未使用缓冲区)
- BufferedOutputStream :使用缓冲区对内容进行输出
- DataOutputStream :对内容按照类型进行存储
- ObjectOutputStream :对对象进行存储(序列化过程必须使用)
- PrintStream :功能与OutputStream相似,但是提供了更加丰富的输出方式
- ByteArrayOutputStream :对输出内容提供一个缓冲区
3. 字节流方式处理
1. 输入流
- FileReader
- BufferReader
- CharArrayReader
- StringReader
2. 输出流
- FileWriter
- BufferWriter
- CharArrayWriter
- StringWriter
- PrintWriter
3.常见方法
- Read() :读取内容
- Write() :向媒体中写入内容
- Flush() :刷新缓冲区,强制将内容写入到文件中
- Close() :关闭当前对象
三、 序列化与反序列化
1.持久化存储
将对象的内容进行长期的保存(对象内容时存储在内存中的,随着程序的关闭对象的信息也会丢失)。通过将对象的内容写入到文件中以实现文件内容的持久化保存
2.序列化及反序列化
2.1. 概念
- 序列化
将对象存储到文件的过程就成为序列化。
- 反序列化
将文件中的内容转换为对象的过程就成为反序列化
2.2. 要求
- 只有实现了Serializable接口的类才具有可序列化的能力
- 如果类中使用了其他的类,则该类也必须实现Serializable接口
- Static的内容是不会被序列化的(因为static成员是属于类的)
- 如果对象中的某个属性不需要被序列化可以是transient进行修饰
- 属性的访问修饰符是无法被序列化的
- 不同版本的序列化文件无法兼容
2.3. 实现步骤
1) 自定义类并实现Serializable接口
2) 创建ObjectOutput(Input)Stream对象
3) 通过对象进行读取或写入
4) 关闭流对象
2.4. 优点
以二进制形式存在,所以具有与平台无关性的特点(可以在各种平台上使用)。
2.5. 应用
- 网络中对象数据的传输(Socket通信)
- 对象的持久化保存
转载于:https://www.cnblogs.com/rsdqc/p/5388631.html
java——IO流整理(一)相关推荐
- java io流大全_Java IO流系统整理
Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位 ...
- JAVA IO流结构图概览
整理Java IO流的关系,并作图如下,以供参考. 下图基于JDK 1.8制作,其中需要注意的是StringBufferInputStream和LineNumberInputStream已被废弃. 详 ...
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- Java IO流思维导图
Java IO流
- Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...
[论述题]请根据第一次平时作业的选题,结合第二次课内容,自拟一个论文提纲. [单选题]在 switch ( expression )语句中, expression 的数据类型不能是 ( ) [单选题] ...
- Java IO流学习总结八:Commons IO 2.5-IOUtils
Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...
- Java IO流学习总结七:Commons IO 2.5-FileUtils
Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...
- Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
Java IO流学习总结六:ByteArrayInputStream.ByteArrayOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ar ...
最新文章
- 数据科学中的强大思维
- 三种方式实现圣杯布局
- java编译器使用教程_Java编译器API简介
- S5PV210的启动过程
- iOS开发之时间格式的转化
- 不同路径Python解法
- 【5】C++语法与数据结构之STL_list学生管理系统_链表内排序_函数指针
- Java GregorianCalendar computeFields()方法与示例
- win10更新失败,怎么删除临时文件下面的更新
- 【单目标优化求解】基于matlab秃鹰算法(BES)求解最优目标问题【含Matlab源码 1546期】
- 双绞线与计算机连接的接口是,网线接口
- 怎么出家ajax假死状态,Ajax如何解决假死?
- 计算机专业的英语六级很难过,英语六级多少分算过 通过率高吗
- 墨刀右键菜单被浏览器右键菜单遮挡导致墨刀右键菜单无法使用
- 支付宝积分兑换的扫地机器人好用_如何选购扫地机器人?
- 耿建超英语语法---定语从句
- 计算机毕业设计,这6个网站早知道,太牛了
- 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
- Docker 安装 Nginx 容器 (完整详细版)
- 你会让你的孩子学“人工智能未来世界”的什么专业?
热门文章
- 本地浏览器缓存sessionStorage(临时存储) localStorage(长期存储)的使用
- 基于物理的渲染-用真实的环境光照亮物体
- dotty编译器语法特性之一交叉类型,联合类型和文本单例类型
- 学好Linux决心书
- 25个优秀的设计机构网站设计案例
- ubuntu 修改host,以便在本地调试
- 从源码看ConcurrentHashMap
- Spring事务那些事儿
- 动态重定位的增加的紧凑功能
- PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder