java 基础之IO框架

原创 2016年08月30日 16:51:43

在程序运行的过程中,JVM的内存中会存放很多数据,当程序结束,JVM关闭的时候,这些数据会流失,如果我们需要把这部分数据保存下来就需要把数据存入本地硬盘,但我们需要使用的时候在从硬盘将数据读入JVM中,这就涉及到JVM与外部进行数据交换。

在java中负责这部分功能API叫做 I/O(I是input缩写,代表输入,O是output缩写,代表输出),这里的输入,输出都是以JVM作为角度来考虑的,数据读入JVM叫做输入,将JVM的数据读出,我们叫做输出,IO的框架有点繁琐,我们整理一遍分类的话会比较清晰

流的分类,按照不同维度有三种,

首先按照方向有输入输出区别我们都知道。

其次按照单位有字节流,字符流区别,对于计算机内的任何资源,底层存放的都是0和1 ,这就是二进制的bit(位),8bit组成一个byte(字节),这也是计算机处理数据的最小单位,因此子接口可以传输任何资源,而当我们与文本打交道的时候有的汉字占用的空间可能不止一个字节,这样就有只保存半个汉字这种情况,为了解决这种情况提供了字符流。

最后是按照功能分有节点流和过滤流,在这个设计上,IO框架使用了“装饰模式”这个设计模式。所谓的过滤流并不能直接提供功能,而是给节点流提供额外功能。

我们总结一下IO的框架。

分类:

1.方向:

a.输入流

b.输出流

2.单位:

a.字节流:   以字节为单位,可以读取所有数据

b.字符流:   以字符为单文,可以读取文本文件

3.功能:

a.节点流:   实际数据传输

b.过滤流:   增加节点流功能(装饰模式)

下面以单位划分介绍一下字节流和字符流

字节流:

1.字节流父类:

a.OutputStream(输出)

b.InputStream(输入)

2.字节节点流

a.FileOutputStream(输出)

b.FileInputStream(输入)

3.字节过滤流

a.DataOutputStream/DataInputStream

增加,读取八种基本类型

b.BufferedOutputStream/BufferedInputStream

增加缓存区

c.ObjectOutPutStream/ObjectInputStream

可以序列化对象

字符流

1.字符流父类:

a.Writer(输出)

b.reader(输入)

2.字符节点流

a.FileWriter:

b.FileReader

3.字符过滤流

a.BufferedWriter/BufferedReader

增加缓存区,最重要的是BufferedReader 增加readLine 方法,做过封装可以直接读取一行

/**
     * Reads a line of text.  A line is considered to be terminated by any one
     * of a line feed ('\n'), a carriage return ('\r'), or a carriage return
     * followed immediately by a linefeed.
     *
     * @return     A String containing the contents of the line, not including
     *             any line-termination characters, or null if the end of the
     *             stream has been reached
     *
     * @exception  IOException  If an I/O error occurs
     *
     * @see java.nio.file.Files#readAllLines
     */
    public String readLine() throws IOException {
        return readLine(false);
    }
b.OutputStreamWriter/InputStreamReader

构造方法接收一个字节流经过它的装饰转换为字符流,并且可以设置编码格式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马程序员_Java基础——IO框架(下)(第6篇)

一、引言

OOP,重写与重载,异常处理机制,多线程,集合框架,IO流 -- Java基础复习

面向对象(OOP) 面向对象编程语言拥有如下几个重要的基本特性: 万物皆为对象(任何事物都可以表示为程序中的对象) 每个对象都拥有其类型(类[class],在这里 类 就是 类...

Java基础之IO框架

流的分类Java的常用输入,输出流:java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类:字符流和字节流 Java的字节流: InputStream是所有字节输入流的祖...

java基础第十天——集合框架与IO流

Map:    双列集合   map集合中的元素都是成对出现,成对存储的   map集合中的元素都是以一对键和值的形式组成存在的,称为键值对,理解为夫妻对   map集合中的键不能重复存储,值可以重复...
  • Sky_jsm
  • Sky_jsm
  • 2015年12月13日 19:22
  • 197

java-IO框架图

  • 2008年03月25日 09:18
  • 176KB
  • 下载

Java基础[07-IO]

  • 2012年10月06日 09:52
  • 105KB
  • 下载

Java中的IO框架流三

1      IO(三)No20 1.1    Properties 属性集 【 Properties 属性集,主要用于操作配置属性, 是以键值对的方式来保存属性,并且都是String类型 ...

java IO 基础教程之一

  • 2012年03月25日 23:04
  • 241KB
  • 下载

JDK框架简析--java.io包中的输入输出类库

Java IO库提供了一个可以称之为链接的机制,可以将一个流与另一个流首尾衔接,形成一个流管道的链接。这种机制实际上是装饰模式(Decorator)的应用。 通过流的链接,可以动态的增加流的功能,而这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 基础之IO框架
举报原因:
原因补充:

(最多只允许输入30个字)