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. SQLI_LAB------level 1

    SQLI_LAB 刷题刷题刷题!!! 知识扩展: SQL 1)SQL注入介绍 SQLI,sql injection,我们称之为 sql 注入.何为 sql,英文:Structured Query La ...

  2. 你必须知道的.Net 8.4.4 位枚举

    位标记集合是一种由组合出现的元素形成的列表,通常设计为以“位或”运算组合新值:枚举 类型则通常表达一种语义相对独立的数值集合.而以枚举类型来实现位标记集合是最为完美的组 合,简称为位枚举.在.NET ...

  3. 第1节 HUE:14、15、16、hue与hdfs、yarn集群、hive、impala、mysql的整合

    3.hue与其他框架的集成 3.1.hue与hadoop的HDFS以及yarn集成 第一步:更改所有hadoop节点的core-site.xml配置 记得更改完core-site.xml之后一定要重启 ...

  4. java.jvm调优

    _amazing~ 基本: 整理:

  5. Redis详解(五)——主从复制

    Redis详解(五)--主从复制 面临问题 机器故障.我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的.而数据是最重要的,如果你不在乎,基本上也就不 ...

  6. System.Data.SqlClient.SqlException: 'Incorrect syntax near 'OFFSET'.

    https://www.nopcommerce.com/boards/t/54586/410-not-running-on-local-system.aspx#209684 Hello, I was ...

  7. 关于重定向RedirectAttributes的用法

    刚才做项目,遇到了redirectAttributes使用的问题,上网找了找,看到一篇写的很不错的博客,解决我对于RedirectAttributes的困惑,也给大家推荐下. 原文链接:href=&q ...

  8. 吴裕雄--天生自然java开发常用类库学习笔记:foreach及Enumeration接口

    import java.util.Vector; import java.util.Enumeration; public class EnumerationDemo01{ public static ...

  9. java集合简单特性

  10. .Net有哪些大型项目、大型网站的案例?

    .Net开发的部分知名网站案例:http://www.godaddy.com 全球最大域名注册商http://www.ips.com 环迅支付,国内最早的在线支付平台http://www.icbc.c ...