http://www.cnblogs.com/zhangyinhua/p/7307455.html

阅读目录(Content)

  • 一、流的概念
  • 二、字节流中常用节点流
    • 1.1、InputStream
    • 1.2、OutputStream
    • 1.3、System.out和System.in
    • 1.4、ByteArrayInputStream和ByteArrayOutputStream
    • 1.5、FileInputStream和FileOutputStream
    • 1.6、PipedInputStream和PipedOutputStream
    • 1.7、ObjectInputStream和ObjectOutputStream(对象流)
  • 三、字节流常用的处理流
    • 3.1、BufferedInputStream和BufferedOutputStream
    • 3.2、DataInputStream和DataOutputStream
    • 3.3、PrintStream

前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要。但是其实并不难,因为他们都有固定的套路。

回到顶部(go to top)

一、流的概念

      流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行。设备可以是文件,网络,内存等
      流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,如果数据的流向是设备至程序称为输入流。
      数据以二进制的形式在程序与设备之间流动传输,就想水在管道里流动一样,所以就把这种数据传输的方式称之为输入流输出流二、流的分类

      1)按照流的方向分为输入流和输出流
      2)按照处理数据的单位不同分为字节流和字符流
          字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)
      3)按照功能的不同分为节点流和处理流
          节点流是可以"直接"从一个数据源中读写数据的流。
          处理流也可以称为功能流或者包装流,它是可以对节点流进行封装的一种流,封装后可以增加节点流的功能。
          例如:FileInputStream是一个节点流,可以直接从文件读取数据,而BufferedInputStream可以包装 FileInputStream,使得其有缓冲数据的功能。
    
      4)除了以上三种分类外,还有其他的一些类型的:对象流、缓冲流、压缩流、文件流等等,其实这些都是节点流或者处理流的子分类。当然还可以分出来其他的流类型,如果有这样需要的话。

    5)不管流的分类是多么的丰富和复杂,其根源来自于四个基本的父类
          字节输入流:InputStream  
          字节输出流:OutputStream  
          字符输入流:Reader                                 这四个父类都是抽象类
          字符输出流:Writer

回到顶部(go to top)

二、字节流中常用节点流

注:java中常用的io流都在java.io包中

1.1、InputStream

    1)方法介绍

    public abstract int read();

    从输入流中读取数据的下一个字节;如果到达流的末尾则返回 -1

    public int read(byte[] b){..}

    把读到的字节存到字节数组b中,并返回本次读到了多少个字节

    public int read(byte[] b,int off,int len){..}

    把读到的字节存到字节数组b中,同时指定开始存的位置以及最大字节数,并返回本次读到了多少个字节

    public int available(){..}

    返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数

    public long skip(long n){..}

    跳过此输入流中数据的 n 个字节

    public void close(){..}

    关闭此输入流并释放与该流关联的所有系统资源

    public boolean markSupported(){..}

    测试此输入流是否支持 mark 和 reset 方法

    public void mark(int readlimit){..}

    在此输入流中标记当前的位置

    public void reset(){..}

    将此流重新定位到最后一次对此输入流调用mark方法时的位置

1.2、OutputStream

    1)方法介绍

    public abstract void write(int b);

    将指定的字节写入此输出流

    public void write(byte[] b){..}

    将字节数组b中的所有字节写入此输出流

    public void write(byte[] b,int off,int len){..}

    将字节数组b中的字节写入此输出流,指定开始位置及最大字节数

    public void flush(){..}

    刷新此输出流并强制写出所有缓冲的输出字节

    public void close(){..}
       关闭此输出流并释放与此流有关的所有系统资源

  注意:InputStream的子类和OutputStream的子类几乎都是成对出现的,一个负责读数据的工作,一个负责写数据的工作  

1.3、System.out和System.in

     标准输入流会默认从控制台读取数据
          标准输出流会默认把数据输出到控制台

     System.out.println(System.in.getClass());
          System.out.println(System.out.getClass());
          输出结果为:
          class java.io.BufferedInputStream
          class java.io.PrintStream

    System类的部分源码:

java core 之 IO流相关推荐

  1. java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上

    标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class  ...

  2. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  3. java中的IO流(超全)(超详解)结合实例轻松掌握

    java进阶之IO流 IO流的概念(大纲): 1.InputStream和OutputStream的继承关系图 2.Reader和Writer的继承关系图 3.文件专属流(加※为重点掌握) ※File ...

  4. 【Java基础】· IO流习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. Java当中的IO流(中)

    Java当中的IO流(中) 删除目录 import java.io.File;public class Demo{public static void main(String[] args){// 目 ...

  6. Java当中的IO流-时间api(下)-上

    Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...

  7. Java基础学习—— IO流

    Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...

  8. java io流分为,Java中的IO流按照传输数据不同,可分为和

    Java中的IO流按照传输数据不同,可分为和 答:字节流 字符流 克里斯蒂安 · 麦茨指出:想象的能指就是电影的能指,作为象征的科学,在第三视野范围内的解读,它是( ) 答:建立在共同的永久的背景之中 ...

  9. 重新java系列之IO流

    重新java系列之IO流 内容介绍 学习目标 字符输入流 字符输入流[Reader] FileReader类 构造方法 读取字符数据 使用演示: 字符输出流 字符输出流[Writer] FileWri ...

  10. 猿创征文|Java中的IO流大家族 (两万字详解)

    目录 IO流 概述 分类 四大家族 需要掌握的16个流 文件专属 FileInputstream(读 字节) FileInputStream类的其他常用方法 FileOutputStream (写 字 ...

最新文章

  1. 数通手稿留档——ISIS
  2. iOS之NSString类中compare方法的陷阱
  3. java对象的内存结构_JAVA 对象内存结构
  4. linux更改甜器名称,Linux添加swap分区
  5. 【Ubuntu-Tensorflow】TF1.0到TF1.2出现“Key LSTM/basic_lstm_cell/bias not found in checkpoin”问题
  6. MSSQL 2005数据库与SP4补丁安装
  7. Python学习之==第三方模块的安装、模块导入
  8. Linux内存管理:MMU那些事儿
  9. 数组中的对象的特征值提取生成新对象实现方法
  10. java servlet面试题_servlet面试题一般有哪些?servlet面试大全详解
  11. 网络设计与系统集成概述
  12. SAP License:实例讲解SAP与金税接口
  13. audio2mid:音频提取主旋律
  14. 卫星导航术语 -- 词汇与概念解释(200条)(转自今日北斗)
  15. win10出现“以太网没有有效的ip配置”的问题
  16. Bootstrap网站模板
  17. 优化工具MOZ功能详细解说
  18. CPU核心、进程、线程
  19. 黑客入侵微软邮件服务器部署勒索软件、惠普更新打印机漏洞|12月2日全球网络安全热点
  20. python中级第九课--模块和包(小白piao分享)

热门文章

  1. Simbad的使用--检索、导入、保存
  2. MAC 电脑里面的“其他”文件是什么占用了
  3. 实时计算在有赞的实践-效率提升之路
  4. 10个最新优秀手机应用界面设计实例
  5. exchange server 2013 owa界面语言修改为中文
  6. iOS 时间校准解决方案
  7. 常见的SQL错误和解决方法
  8. 感谢你遇到的问题(2)
  9. iOS开发之实现方法链调用
  10. Task Office for mac(任务办公计划管理)