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流

Map:    双列集合   map集合中的元素都是成对出现,成对存储的   map集合中的元素都是以一对键和值的形式组成存在的,称为键值对,理解为夫妻对   map集合中的键不能重复存储,值可以重复...

Java基础之IO框架

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

java-IO框架图

  • 2008-03-25 09:18
  • 176KB
  • 下载

Java基础[07-IO]

  • 2012-10-06 09:52
  • 105KB
  • 下载

Java-IO框架-文件输入输出流

数据流 BufferedReader BufferedWriter FileOutputStream FileInputStream InputStreamReader OutputStreamWr...

java IO 基础教程之一

  • 2012-03-25 23:04
  • 241KB
  • 下载

Java-IO之总框架

在Java IO中我们会经常提到输入流和输出流,流是一种抽象的数据总称,本质是能够进行数据的传输。按照流的方向分为:输入流和输出流。按照流中处理数据的单位,可以将其区分为:字节流和字符流。在Java中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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