【第22期】观点:IT 行业加班,到底有没有价值?

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基础解析

1.什么是IO技术: 解释:IO技术其实就是用来解决设备与设备之间的数据传输问题。例如从内存到硬盘、从硬盘到内存等 2.IO知识点宏观了解: -2.1字节流: ---2.1.1什么是字节流: ...

Java基础之IO框架

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

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Java基础学习之对IO流的理解

1 什么是IO   Java中I/O操作主要是指使用Java进行输入,输出操作。Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供...

Java中IO总结

java.io(Input/Output) Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流...

Java基础——IO(1)

IO流概述Java中采用IO流的方式来进行数据传输,IO流分为两种: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Write...

Java基础之IO输入输出流

一、总概:     Java的IO痛java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字节为单位来处理输入。...

关于java基础--IO流

1,BufferedInputStream字符输入缓冲流  * BufferedInputStream:字符输入缓冲流,成为处理流(高级流)  * 它是字节流包装,所以不能直接的去操作数据源,只能...

java基础-IO流回顾

IO流回顾 java.io.File类的使用 IO原理及流的分类 文件流 FileOutputstream/FileInputStream/FileReader/FileWriter 缓冲流 Buff...

java中IO类的各种操作

java的IO类操作主要包括如下几类  1、File类的使用。  2、字节操作流:OutputStream、InputStream  3、字符操作流:Reader、Writer  4、对象序列...

Java基础之文件IO

概述Java 的 I/O 操作类在包 java.io 下,大概有将近 80 个类,但是这些类大概可以分成四组,分别是:按处理数据类型来分:字节流和字符流: 基于字节操作的 I/O 接口:InputSt...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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