Java基础之IO流

Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接)

抽象基类
字节流:InputStream,OutputStream.

输出流方法:close(), flush(), write(int b), write(byte[] b), write(byte[] b, int off, int len)
输入流方法:close(), abstract int read(), int read(byte[] b)

子类(非装饰流):文件流:FileOutputStream,FileInputStream.
构造方法:FileOutputStream(File file),FileOutputStream(String filename)
构造方法可以添加第二个布尔参数设置是否为追加模式

子类(装饰流):序列化流:ObjectOutputStream,ObjectInputStream
构造方法:ObjectOutputStream(OutputStream out), ObjectInputStream(InputStream in)
输入流序列化方法:writeObject (Object obj)
输出流反序列化方法:readObject ()

子类(装饰流):过滤字节流:FilterInputStream,FilterOutputStream

子类(装饰流):字节缓冲流:BufferedInputStream,BufferedOutputStream
构造方法:BufferedInputStream(InputStream in), BufferedOutputStream(OutputStream out)

子类(装饰流):打印流PrintStream
构造方法:PrintStream(String fileName)
方法:print(),printf(),println()...
System.setOut(PrintStream out)

子类(装饰流):字节数据流:DataOutputStream,DataInputStream
构造方法:DataOutputStream(OutputStream out),DataInputStream(InputStream in)
方法:write...

抽象基类
字符流:Reader,Writer

输入流方法:close(), int read(), int read(char[] cbuf)
输出流方法:close(), flush(),write(int c) write(char[] cbuf), write(char[] cbuf, int off, int len) write(String str)

子类(装饰流):字符缓冲流:BufferedReader,BufferedWriter
构造方法:BufferedReader(Reader in), BufferedWriter(Writer out)
特有方法:String readLine(), newLine(),

子类(装饰流2):转换流:InputStreamReader,OutputStreamWriter
构造方法:InputStreamReader(InputStream in),InputStreamReader(InputStream in, String charsetName)

子类(非装饰流):字符文件流:FileReader,FileWriter
构造方法:FileWriter(File file),FileWriter(String filename)

Java IO流采用装饰器设计模式,当包装流关闭时,其内部的被包装流也会关闭
字符流才有write(string)方法,字节流只能写入byte和int

xmind文件: 提取码:n414


  • readObject读取到末尾时再读取会抛出EOFException
    解决方法:
    1.记录写入的数量
    2.使用容器,例如ArrayList
    3.捕获EOFException

Java基础之IO流整理的更多相关文章

  1. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  2. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  3. 【java基础】]IO流

    IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...

  4. java基础之 IO流

    javaIO流   IO流 : (input  output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方.   IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...

  5. java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理

    一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...

  6. java基础之io流总结一:io流概述

    IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...

  7. 黑马程序员——JAVA基础之IO流FileReader,FileWriter

    ------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流  IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...

  8. java基础06 IO流

    IO用于在设备间进行数据传输的操作. Java IO流类图结构:   IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...

  9. java基础之IO流及递归理解

    一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...

随机推荐

  1. 5G/NR 帧结构

    原文链接:http://www.sharetechnote.com/html/5G/5G_FrameStructure.html 在学术界和3GPP中对帧结构进行了长时间的讨论,现在我们就NR(5G) ...

  2. HihoCoder第三周与POJ2406:KMP算法总结

    HihoCoder第三周: 输入 第一行一个整数N,表示测试数据组数. 接下来的N*2行,每两行表示一个测试数据.在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不 ...

  3. Java笔记--泛型

    1.泛型解决元素存储的安全性问题:解决获取数据元素时,需要类型强转的问题. --泛型的核心思想:把一个集合中的内容限制为一个特定的数据类型. 2.泛型的使用 1)在集合中使用 2)自定义泛型类.泛型接 ...

  4. Metasploit学习笔记——网络服务渗透攻击

    1.内存攻防技术 1.1缓冲区溢出漏洞机理 1.2栈溢出利用机理 1.3缓冲区溢出利用的限制条件 2.网络服务渗透攻击面 3. Windows服务渗透攻击实战案例——MS08-067安全漏洞 示例代码 ...

  5. 安装mysql server5.5 到start service未响应解决方法

    打开C盘,然后修改    "组织"  =>  "查看"(如下图)  里面的  "隐藏受保护的操作系统文件"  (系统这是会弹出警告,不 ...

  6. java 如何爬取百度百科词条内容(java如何使用webmagic爬取百度词条)

    这是老师所布置的作业 说一下我这里的爬去并非能把百度词条上的内容一字不漏的取下来(而是它分享链接的一个主要内容概括...)(他的主要内容我爬不到 也不想去研究大家有好办法可以call me) 例如 互 ...

  7. NAND厂商哭晕:减产也阻止不了跌价

    导读 NAND闪存价格已经连跌了6个季度,这让上游NAND厂商三星.东芝.美光等损失惨重,纷纷削减NAND产能.在群联台北电脑展上,群联公司董事长潘建成也预测NAND闪存价格已经跌破了成本,未来跌幅会 ...

  8. 从ofo牵手理财平台看,用户隐私数据的使用有底线吗?

    智慧生活的到来既是社会变迁的拐点,又不可避免地带来一种挥之不去的焦虑.这种焦虑的由来,是因个人隐私数据在智慧生活下变成一种"黑暗财富".随着相关数据挖掘.收集.分析技术的成熟,人们 ...

  9. linux添加一个已经存在用户到一个用户组

    在使用virtual-box的共享文件时,在虚拟机中共享文件的用户为root,用户组为vboxsf, 所以需要将自己添加到vboxsf这组当中去,一开始使用useradd老是失败,后来才查到要用use ...

  10. 杂记 -- 关于ref、kepp-alive、nextTick、fetch

    1.ref:定义一个普通的dom节点或一个vue的组件实例对象 定义方法: <div class="page1"> <button @click="li ...