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. Windows驱动开发-_DRIVER_OBJECT结构体

    每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的,内核对一个驱动只加载一个实例,是由内核中的I/O管理器负责加载的,驱动程序需要在Driver ...

  2. git使用问题一新建本地仓库添加远程合并推送

    1,git远程新建仓库demo 2,git本地初始化仓库demo 3,git本地添加远程仓库 git remote add <name> <url> 4,git把远程仓库pul ...

  3. CodeForces - 876B Divisiblity of Differences

    题意:给定n个数,从中选取k个数,使得任意两个数之差能被m整除,若能选出k个数,则输出,否则输出“No”. 分析: 1.若k个数之差都能被m整除,那么他们两两之间相差的是m的倍数,即他们对m取余的余数 ...

  4. mysql提示 Lock wait timeout exceeded解决办法 事务锁死

    查询  select concat('KILL ',id,';') from information_schema.processlist; 复制结果 新建sql脚本粘贴并执行

  5. 创建springboot2.1项目运行报错

    刚创建好一个项目,运行就报错:in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging ...

  6. Golang的基础数据类型-布尔型

    Golang的基础数据类型-布尔型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool类型概述 bool类型的取值范围: bool类型的值只有两种,其值不为真即为假,可以用 ...

  7. C++ AVFrame转BMP 或者其他形式转化也可

    void CffmpegUIDlg::SaveAsBMP(AVFrame *pFrameRGB, int width, int height, int index, int bpp) { BITMAP ...

  8. CSS - input 只显示下边框

      CSS 样式 :   border:none;   border-bottom: 1px solid #000

  9. golang用slice、list当queue

    背景 golang没有queue这种类型,不过可以用slice.list模拟 slice当queue 声明队列 var queue []int 入队一个元素: queue = append(queue ...

  10. 十八、SAP中使用IF/ELSE判断语句,以及sy-subrc的用法

    一.sy_subrc为上一条语句的执行结果,如果为0,则表示执行成功. 需要注意的是,IF ELSE语句,每一个关键字都需要带句号 二.执行效果如下 相关代码如下 *&------------ ...