您的位置:首页 > 编程语言 > Java开发

java基础知识点梳理4

2016-01-21 11:10 381 查看
IO流

流的分类
方向分:输入流和输出流

单位分:字节流和字符流
功能分:节点流和包装流

字节单位
InputStream(输入 读) OutputStream(输出 写)
FileInputStream FileOutputStream (处理对象 File)
ByteArrayInputStream ByteArrayOutputStream (处理对象 ByteArray)
PipedInputStream PipedOutputStream (处理对象 Piped)

字符单位(读写是遇到中文字符时读写半个字节的问题)
Reader(输入 读) Writer(输出 写)
FileReader FileWriter (处理对象 File)
CharArrayReader CharArrayWriter (处理对象 CharArray)
PipedReader PipedWriter (处理对象 Piped)

包装流
没有明确的处理节点,依附在节点流之上,为节点流读写数据时提供额外的功能。
BufferedInputStream/BufferedOutputStream提供缓冲功能
DataInputStream/DataOutputStream提供更多的数据读写方法
ObjectInputStream/ObjectOutputStream提供对象的序列化与反序列化功能

缓冲
close方法
1、强制刷新缓冲区flush()。
2、关闭资源。

close()和flush()的区别:
flush():将缓冲区的数据刷到目的地中后,流可以使用。
close():将缓冲区的数据刷到目的地中后,流就关闭了,该方法主要用于结束调用的底层资源。这个动作一定做。
io异常的处理方式:io一定要写finally

IO中的使用到了一个设计模式:装饰设计模式。
装饰设计模式解决:对一组类进行功能的增强。
包装:写一个类(包装类)对被包装对象进行包装;
* 1、包装类和被包装对象要实现同样的接口;
* 2、包装类要持有一个被包装对象;
* 3、包装类在实现接口时,大部分方法是靠调用被包装对象来实现的,对于需要修改的方法我们自己实现;

字符流:
Reader用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。
|---BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可

以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
|---LineNumberReader跟踪行号的缓冲字符输入流。此类定义了方法setLineNumber(int)和 getLineNumber(),它们可分别用于设置和获取当前行号。
|---InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
|---FileReader用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
|---CharArrayReader
|---StringReader
-------------------------------------------------
Writer写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。
|---BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
|---OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
|---FileWriter用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。
|---PrintWriter
|---CharArrayWriter
|---StringWriter
---------------------------------
字节流:
InputStream是表示字节输入流的所有类的超类。
|---FileInputStream从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
|--- FilterInputStream包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
|--- BufferedInputStream该类实现缓冲的输入流。
|--- Stream
|--- ObjectInputStream
|--- PipedInputStream
-----------------------------------------------
OutputStream此抽象类是表示输出字节流的所有类的超类。
|---FileOutputStream文件输出流是用于将数据写入
File
FileDescriptor
的输出流。
|--- FilterOutputStream此类是过滤输出流的所有类的超类。
|--- BufferedOutputStream该类实现缓冲的输出流。
|--- PrintStream
|--- DataOutputStream
|--- ObjectOutputStream
|--- PipedOutputStream
--------------------------------
缓冲区是提高效率用的,给谁提高呢?
BufferedWriter:是给字符输出流提高效率用的,那就意味着,缓冲区对象建立时,必须要先有流对象。明确要
提高具体的流对象的效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 基础 知识点