一、基础

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流整理(一)相关推荐

  1. java io流大全_Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位 ...

  2. JAVA IO流结构图概览

    整理Java IO流的关系,并作图如下,以供参考. 下图基于JDK 1.8制作,其中需要注意的是StringBufferInputStream和LineNumberInputStream已被废弃. 详 ...

  3. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

  4. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  5. Java IO流思维导图

    Java IO流

  6. Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...

    [论述题]请根据第一次平时作业的选题,结合第二次课内容,自拟一个论文提纲. [单选题]在 switch ( expression )语句中, expression 的数据类型不能是 ( ) [单选题] ...

  7. Java IO流学习总结八:Commons IO 2.5-IOUtils

    Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...

  8. Java IO流学习总结七:Commons IO 2.5-FileUtils

    Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...

  9. Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream

    Java IO流学习总结六:ByteArrayInputStream.ByteArrayOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ar ...

最新文章

  1. 数据科学中的强大思维
  2. 三种方式实现圣杯布局
  3. java编译器使用教程_Java编译器API简介
  4. S5PV210的启动过程
  5. iOS开发之时间格式的转化
  6. 不同路径Python解法
  7. 【5】C++语法与数据结构之STL_list学生管理系统_链表内排序_函数指针
  8. Java GregorianCalendar computeFields()方法与示例
  9. win10更新失败,怎么删除临时文件下面的更新
  10. 【单目标优化求解】基于matlab秃鹰算法(BES)求解最优目标问题【含Matlab源码 1546期】
  11. 双绞线与计算机连接的接口是,网线接口
  12. 怎么出家ajax假死状态,Ajax如何解决假死?
  13. 计算机专业的英语六级很难过,英语六级多少分算过 通过率高吗
  14. 墨刀右键菜单被浏览器右键菜单遮挡导致墨刀右键菜单无法使用
  15. 支付宝积分兑换的扫地机器人好用_如何选购扫地机器人?
  16. 耿建超英语语法---定语从句
  17. 计算机毕业设计,这6个网站早知道,太牛了
  18. 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
  19. Docker 安装 Nginx 容器 (完整详细版)
  20. 你会让你的孩子学“人工智能未来世界”的什么专业?

热门文章

  1. 本地浏览器缓存sessionStorage(临时存储) localStorage(长期存储)的使用
  2. 基于物理的渲染-用真实的环境光照亮物体
  3. dotty编译器语法特性之一交叉类型,联合类型和文本单例类型
  4. 学好Linux决心书
  5. 25个优秀的设计机构网站设计案例
  6. ubuntu 修改host,以便在本地调试
  7. 从源码看ConcurrentHashMap
  8. Spring事务那些事儿
  9. 动态重定位的增加的紧凑功能
  10. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder