#java 流类图结构:

##一、 流的分类

  1. 按数据流的方向不同:输入流,输出流。

  2. 按处理数据单位不同:字节流(InputStream,OutputStream),字符流(Reader,Writer)。
    (1) 字节流:数据流中最小的数据单元是字节。
    (2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。

  3. 按功能不同:节点流,处理流。
    (1)程序用于直接操作目标设备所对应的类叫节点流。
    (2)程序通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是处理流。
    ##二、节点流
    ###1. 节点流的类型

    (1)File 文件流。对文件进行读、写操作 :FileReader、FileWriter、FileInputStream、FileOutputStream。
    (2)Memory
    [1]从/向内存数组读写数据: CharArrayReader与 CharArrayWriter、 ByteArrayInputStream与ByteArrayOutputStream。
    [2]从/向内存字符串读写数据 StringReader、StringWriter、StringBufferInputStream。
    (3)Pipe管道流。 实现管道的输入和输出(进程间通信): PipedReader与PipedWriter、PipedInputStream与PipedOutputStream。
    ####字节文件流:

    package com.senior.io;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Arrays;

    public class FileInputStream_FileOutputStream {
    public static void main(String[] args) {
    InputStream input = null;
    OutputStream output = null;
    try {
    File file = new File(“file/file.txt”);
    input = new FileInputStream(file); //没有该文件会FileNotFoundException抛异常
    //FileOutputStream(String name,boolean append) append:是否可以追加文件
    output = new FileOutputStream(“file/file1.txt”,true); //没有该文件会自动创建
    byte[] b = new byte[3];
    int count = -1;
    while((count = input.read(b)) != -1) {
    System.out.println(Arrays.toString(b));
    output.write(b, 0, count);
    }
    output.flush(); //强制刷新暂存区,将所有字节强制输出
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    if (output !=null){
    try {
    output.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    if (input != null) {
    try {
    input.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    }
    ####字符文件流:

    package com.senior.io;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.Writer;
    import java.util.Arrays;

    public class Reader_Writer {
    public static void main(String[] args) {
    Reader reader = null;
    Writer writer = null;
    try {
    File file = new File(“file/file.txt”);
    reader = new FileReader(file);
    writer = new FileWriter(“file/file1.txt”);

    char[] ch = new char[3];
    int count = -1;
    while ((count = reader.read(ch)) != -1) {System.out.println(Arrays.toString(ch)+" " +count);writer.write(ch, 0, count);
    }
    writer.flush();
    } catch (FileNotFoundException e) {e.printStackTrace();
    } catch (IOException e) {e.printStackTrace();
    } finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}
    }
    

    }

###2. 节点流执行的图示

三、处理流

  1. 处理流的类型

    -(1)Buffering缓冲流:在读入或写出时,对数据进行缓存,以减少I/O的次数:BufferedReader与BufferedWriter、BufferedInputStream与BufferedOutputStream。
  • (2)Filtering 滤流:在数据进行读或写时进行过滤:FilterReader与FilterWriter、FilterInputStream与FilterOutputStream。
  • (3)Converting between Bytes and Characters 转换流:按照一定的编码/解码标准将字节流转换为字符流,或进行反向转换(Stream到Reader):InputStreamReader、OutputStreamWriter。
  • (4)Object Serialization 对象流 :ObjectInputStream、ObjectOutputStream。
  • (5)DataConversion数据流: 按基本数据类型读、写(处理的数据是Java的基本类型(如布尔型,字节,整数和浮点数)):DataInputStream、DataOutputStream 。
  • (6)Counting计数流: 在读入数据时对行记数 :LineNumberReader、LineNumberInputStream。
  • (7)Peeking Ahead预读流: 通过缓存机制,进行预读 :PushbackReader、PushbackInputStream。
  • (8)Printing打印流: 包含方便的打印方法 :PrintWriter、PrintStream。
  1. 处理流执行的图示
  2. 缓冲流
    【1】对I/O进行缓冲是一种常见的性能优化,缓冲流为I/O流增加了内存缓冲区,增加缓冲区的两个目的:
    (1)允许Java的I/O一次不只操作一个字符,这样提高䇖整个系统的性能;
    (2)由于有缓冲区,使得在流上执行skip、mark和reset方法都成为可能。

【2】缓冲流:它是要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,
提高了读写的效率,同时增加了一些新的方法。例如:BufferedReader中的readLine方法,BufferedWriter中的newLine方法
4. 转换流
转换流有两种:
(1)InputStreamReader:将字节流转换为字符流;
(2)OutputStreamWriter:将字符流转换为字节流。
5. 数据流
数据流:DataInputStream和DataOutputStream
(1)DataInputStream和DataOutputStream是面向字节的,因此要使用InputStream和OutputStream。
(2)DataInputStream和DataOutputStream分别继承InputStream和OutputStream,
它们属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。
(3)DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类数据(如:int,double等)的方法。
(4)DataInputStream和DataOutputStream的构造方法:
DataInputStream(InputStream in)
DataOutputStream(OutputStream out)

java IO流分类相关推荐

  1. Java IO流总结

    Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...

  2. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  3. Java IO流学习总结(一)—— IO流分类和常用IO流汇总

    Java IO流学习总结(一)-- IO流分类和常用IO流汇总 IO流的分类: - 按流向分类:输入流.输出流 - 按操作对象分类:字节流.字符流 - 按功能分类:节点流.处理流 IO流的设计模式为装 ...

  4. Java基础 -IO入门简介、文件操作、与IO流分类简述

    文章目录 IO流入门概念 文件概念 什么是文件 文件流 文件常用操作 创建文件对象相关构造器和方法 创建文件案例 注意 获取文件相关信息 目录的操作和文件删除 delete mkdir.mkdirs ...

  5. java io流读写文件换行_java基础io流——OutputStream和InputStream的故事(温故知新)...

    io流概述: IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中. IO流分类 按照数据流向 输入流 读入数据 输出流 写出 ...

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

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

  7. java io流 教程_Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...

  8. java IO流小结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  9. java io流的学习总结~~

    java io流的学习总结~~ 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类, ...

  10. Java IO流简介

    Java中的流是什么? java中的流是一个抽象的概念,在java的程序中需要把文件从一个设备传输到另一个设备上,这个设备可以是内存,程序,文件,网络.把在这些之间传输的叫做流.官方的解释:流是一组有 ...

最新文章

  1. 跟阿里云技术专家阙寒一起深度了解视频直播CDN技术
  2. CSS Float(浮动)
  3. 第 5 章 Spring Boot
  4. 【Python Turtle合集】有趣好玩的代码当然要分享给大家啦~(皮卡丘、玫瑰花、小黄人......)
  5. python中内置的数据结构有几种?
  6. h5是什么 www.php.cn,20分钟看懂html5 看看H5都有啥新特性
  7. 移动端HTML响应式布局之神奇的pt(自测99.99%与设计图一致)
  8. 数据结构——二叉树的层次遍历
  9. 应用程序的主入口点应用程序的主入口点应用程序的主入口点
  10. 36产生用户恶情绪和报复情绪的原因
  11. 开启 NFS 文件系统提升 Vagrant 共享目录的性能
  12. JavaHelp 开发系统帮助(二)
  13. 力扣77.组合(JavaScript)
  14. 安装了mySQL后怎么导入数据_mysql安装、配置、导入数据库
  15. Java滑动窗口实现当前窗口内最大值输出
  16. 【codeVS 1082】树状数组(区间修改,区间查询)模版题
  17. L298电机驱动原理图+PCB
  18. 亮相SIGGRAPH 太极拳三维教学App制作揭秘
  19. 考研数学二-汤家凤中值定理
  20. httpPost.setHeader,httpPost.addHeader 区别

热门文章

  1. 安利超实用的游戏unity3d场景模型素材网站
  2. LDAP——实现用户统一登录管理
  3. iozone文件系统测试工具
  4. 宽度学习系统(BLS)的原理、变体形式及当前应用(随时更新......)
  5. 自适应滤波器5-最小二乘法(LSM)
  6. FileInputStreamFileOutputStream 和 BufferedInputStreamBufferedOutputStrem的性能测试小案例
  7. three.js 加载fbx文件并解析
  8. 基于SpringBoot超市库存管理系统+文档
  9. python遍历文件夹下的所有文件
  10. 分享一款超好用的 Web SSH 客户端工具