IO框架

  1. 流:内存与存储设备之间传输数据的通道
  2. 分类
    1. 流向
      1. 输入流:从硬盘等外设到内存的流
      2. 输出流:从内存到硬盘等外设的流
    2. 传输单位
      1. 字节流(抽象类InputStream,OutputStream):以字节为单位,可以读写任何数据
      2. 字符流(抽象类Reader,Writer):以字符为单位,只能读写文本数据
    3. 功能
      1. 节点流:一般的流
      2. 过滤流FilterInputStream,FilterOutputStream:在节点流的基础上增强功能

字节流

  1. 字节流的父类InputStream,OutputStream,并且是抽象类,读取文件和写入文件一般用FileInput/OutputStream
  2. 字节缓冲流:BufferedInputStream,BufferedInputStream
    1. 是过滤流的子类,所以是对节点流的功能的增强,需要用节点流(大多数情况都是FileInput/OutputStream)为基础来创建字节缓冲流
    2. 自带默认大小为8k的缓冲区
    3. 字节输出缓冲流的flush方法,是将缓冲区的内容写进硬盘
    4. 字节输出缓冲流的close方法自动执行flush方法
  3. 对象流:ObjectInputStream,ObjectOutputStream
    1. 主要方法:readObject,writeObject(Object obj)
    2. 从内存中向硬盘写入对象称为序列化,从硬盘中读出称为反序列化
    3. 增强了三个功能
      1. 缓冲区功能
      2. 读写八种基本数据类型和字符串功能
      3. 读写对象的功能
    4. ObjectOutputStream中要写入硬盘的对象的类必须实现可序列化接口(Serializable,只是一个标识性接口,代表可以序列化),类中对象的属性也要实现可序列化接口(比如类中属性也为类对象)
    5. 实现序列化接口的类最好声明一个serialVersionUID,序列化版本号id,保证序列化和反序列化的类是同一个类
    6. 使用transient(瞬间的)修饰的属性,不能被序列化
    7. 静态属性不能被序列化
    8. 序列化多个对象,可以借助集合实现

字符流

  1. 字符编码:
    1. 国际通用UTF-8,几乎收录了所有国家的常用字符,长度可变,可以是1,2,3字节
    2. 国内使用GBK
    3. 当编码方式与解码方式不一致时,会出现乱码,即写文件和读文件要用相同的编码方式
  2. 字符流的父类Reader(主要方法read),Writer(主要方法write,append,flush),并且是抽象类,读取文件和写入文件一般用FileReader/Writer
  3. 字符缓冲流:BufferedReader,BufferedWriter
    1. 自带8k缓冲区,高效读写
    2. 支持输入换行符
    3. 可一次写一行,读一行
    4. 重要方法,readLine,newLine
    5. 是过滤流的子类,所以是对节点流的功能的增强,需要用节点流(大多数情况都是FileReader/Writer)为基础来创建字节缓冲流

特殊的流

  1. PrintWriter:打印用的,方法大多是print开头的,不需要节点流做基础
  2. 转换流:又叫桥转换流,InputStreamReader,OutputStreamWriter
    1. 可将字节流转化为字符流
    2. 可以设置字符的编码方式(之前的类使用的是默认编码方式)

Java——IO框架的更多相关文章

  1. java IO框架分析

    jave.io框架 2010-11-10 22:18:34|  分类: 默认分类|举报|字号 订阅     可从IO的类层次,IO框架的设计模式来论述. 总体来说,IO可以分为字节流和字符流,不同在于 ...

  2. java IO 框架图

  3. JAVA IO 序列化与设计模式

    ➠更多技术干货请戳:听云博客 序列化 什么是序列化 序列化:保存对象的状态 反序列化:读取保存对象的状态 序列化和序列化是Java提供的一种保存恢复对象状态的机制 序列化有什么用 将数据保存到文件或数 ...

  4. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  5. Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO

    (三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO  写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...

  6. Java基础之IO框架

    一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等.        ...

  7. java.io包的总体框架图(转)

    原文链接:java.io包的总体框架图, 便于记忆!

  8. Java三大框架之——Hibernate关联映射与级联操作

    什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...

  9. java 持久框架mybatis的初步学习

    什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...

  10. (转)Java集合框架:HashMap

    来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...

随机推荐

  1. 问一个 Windows 窗口的 Capture 问题

    好久没写了,上来先问一个问题...羞射... 有 A.B 两个窗口,A 是 B 的 Owner,B 不激活不抢焦点.在 B 的 WM_LBUTTONDOWN 的时候,设置 A 窗口为 Capture: ...

  2. 【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

    FTP服务-vsftp协议实现 我们常用的是FTP协议,主要是通过VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来, ...

  3. 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类

    作者:京东物流 王北永 姚再毅 1 背景 日常开发过程中,尤其在 DDD 过程中,经常遇到 VO/MODEL/PO 等领域模型的相互转换.此时我们会一个字段一个字段进行 set|get 设置.要么使用 ...

  4. avalonia实现自定义小弹窗

    对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义 创建项 ...

  5. 2023牛客寒假算法基础集训营5 A-L

    比赛链接 A 题解 知识点:前缀和,二分. 找到小于等于 \(x\) 的最后一个物品,往前取 \(k\) 个即可,用前缀和查询. 时间复杂度 \(O(n + q\log n)\) 空间复杂度 \(O( ...

  6. immutable.js学习笔记(五)----- Set

    一.Set 二.API (一)add:添加值 (二)delete:删除值 注意:删除后的Set是无序的 (三)clear:清空并返回新Set (四)union:N个set合并为一个set (五)int ...

  7. Svelte框架结合SpreadJS实现表格协同文档

    SpreadJS是葡萄城结合 40 余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件.作为一个类Excel控件,SpreadJS如何实现当前比较流行的表格协同呢?本篇文章将简单介绍一下 ...

  8. *已解决 java写的简单验证码Servlet实践

    目的:java写的简单验证码Servlet实践 总结项目中遇到的问题 提供遇到同样问题的一些(菜鸟的)思路 (代码在最后~) 项目参考:https://www.itdaan.com/blog/2018 ...

  9. Centos7下areaDetector IOC的编译

    准备: Centos7ministall的系统: root权限下: yum install -y epel-release yum install -y git wget gcc gcc-c++ au ...

  10. Windows环境下FTP Server在局域网内的搭建

    什么是FTP? File transfer protocol sreveris a computer software that facilitate the secure rxchange of f ...