IO

I/O输入/输出(Input/Output)
无论是系统、还是语言的设计中IO的设计都是异常复杂的。面临的最大的挑战一般是如何覆盖所有可能的因素,我们不仅仅要考虑文件、控制台、网络、内存等不同的种类,而且要处理大量的不同的读取方式,如:顺序读取、随机读取,二进制读取、字符读取,按行读取、按字符读取……

路径

rt.jar — java.io.*

rt.jar? Java基础类库,也就是Java doc里面看到的所有的类的class文件

java类库帮助文档 java io类库_java类库帮助文档


java.io.* --------- 常说的BIO

java类库帮助文档 java io类库_java类库帮助文档_02

java.io.*

照例先看接口,后看类

  • 接口
//关闭流并且释放与其相关的任何方法,如果流已被关闭,那么调用此方法没有效果。
interface Closeable
//接口用于从二进制流中读取字节,并重构所有 Java 基本类型数据,同时还提供根据 UTF-8 修改版格式的数据重构 String 的工具
interface DataInput
/**
 *接口用于将任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流
 *同时还提供了一个将 String 转换成 UTF-8 修改版格式并写入所得到的系列字节的工具
 */
interface DataOutput
//序列化时会调用默认构造器的
interface Externalizable extends java.io.Serializable
//函数式接口---File过滤器
@FunctionalInterface
interface FileFilter
//函数式接口---File过滤器--目录和文件名
@FunctionalInterface
interface FilenameFilter
//可以强制将缓存的输出写入到与对象关联的流中。该接口定义了flush()方法
interface Flushable
//ObjectInput接口扩展接口包括数组、对象、字符串。
interface ObjectInput extends DataInput, AutoCloseable
//回调接口,以允许对图形中的对象进行验证
interface ObjectInputValidation
//ObjectOutput 接口扩展接口包括数组、对象、字符串
interface ObjectOutput extends DataOutput, AutoCloseable
//写入对象序列化流的常量
interface ObjectStreamConstants
/**
 *“持久化”意味着对象的“生存时间”并不取决于程序是否正在执行——它存在或“生存”于程序的每一次调用之间。通过序列化一个对象,
 *将其写入磁盘,以后在程序再次调用时重新恢复那个对象,就能圆满实现一种“持久”效果。
 */
interface Serializable
//这是一个工具类,其中封装好了一些方法,用于处理原始数据和字节数据之间的转化
class Bits
/**
 *BufferedInputStream继承于FilterInputStream,提供缓冲输入流功能。缓冲输入流相对于普通输入流的优势是,它提供了
 *一个缓冲数组,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数
 *据源(譬如*文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户.
 *由于从缓冲区里*读取数据远比直接从物理数据源(譬如文件)读取速度快。
 */
class BufferedInputStream extends FilterInputStream
//是缓冲输出流。它继承于FilterOutputStream。
class BufferedOutputStream extends FilterOutputStream
//是缓冲字符输入流。它继承于Reader
class BufferedReader extends Reader
//是缓冲字符输出流。它继承于Writer
class BufferedWriter extends Writer
//字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中
class ByteArrayInputStream extends InputStream
//字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中
class ByteArrayOutputStream extends OutputStream
//是字符数组输入流
class CharArrayReader extends Reader
//是字符数组输出流
class CharArrayWriter extends Writer
//字符转换异常的基类
class CharConversionException extends java.io.IOExceptionwil
//只能用在标准输入、输出流未被重定向的原始控制台中使用
final class Console implements Flushable
//数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型
class DataInputStream extends FilterInputStream implements DataInput
//数据输出流允许应用程序以与机器无关方式将Java基本数据类型写到底层输出流。
class DataOutputStream extends FilterOutputStream implements DataOutput
//作用是返回默认的Unix(Windows)文件系统对象(默认构造方法给的是默认对象)
class DefaultFileSystem
//个类记录了在虚拟机关闭时将被删除的文件名,通过关闭触发(删除)被用于防止文件的重复插入和提供快速删除功能
class DeleteOnExitHook
//当输入过程中意外达到文件或流的末尾时抛出此异常
class EOFException extends IOException
//
class ExpiringCache
//File文件相关操作
class File implements Serializable, Comparable<File>
//文件描述符
final class FileDescriptor
//可以从文件系统中的某个文件中获得输入字节
class FileInputStream extends InputStream
//FileNotFoundException 
class FileNotFoundException extends IOException
//将字节流写入文件
class FileOutputStream extends OutputStream
//文件权限--授权
final class FilePermission extends Permission implements Serializable
//文件权限--授权
class FilePermissionCollection extends PermissionCollection implements Serializable
//FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据
class FileReader extends InputStreamReader
//为文件系统提供一个接口,是对象访问文件系统中的文件和其它对象的工厂类
abstract class FileSystem
//FileWriter 类从 OutputStreamWriter 类继承而来。该类按字符向流中写入数据。
class FileWriter extends OutputStreamWriter
//过滤器字节输入流
class FilterInputStream extends InputStream
//过滤器字节输出流
class FilterOutputStream extends OutputStream
//字符过滤输入流
abstract class FilterReader extends Reader
//字符过滤输出流
abstract class FilterWriter extends Writer
//数据起源
abstract class InputStream implements Closeable
//从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符
class InputStreamReader extends Reader
//InterruptedIOException 
class InterruptedIOException extends IOException
//InvalidClassException 
class InvalidClassException extends ObjectStreamException
//InvalidObjectException 
class InvalidObjectException extends ObjectStreamException
//IOError 
class IOError extends Error
//IOException 
class IOException extends Exception
//LineNumberReader继承自BufferedReader,并且增加了下面两个功能,获取行号,设置行号
class LineNumberReader extends BufferedReader
//Thrown when serialization or deserialization is not active 
class NotActiveException extends ObjectStreamException
//Thrown when an instance is required to have a Serializable interface
class NotSerializableException extends ObjectStreamException
//ObjectInputStream 
class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants
//ObjectOutputStream 
class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants
//ObjectStreamClass 
class ObjectStreamClass implements Serializable
//ObjectStreamException 
abstract class ObjectStreamException extends IOException
//ObjectStreamField 
class ObjectStreamField implements Comparable<Object>
//OptionalDataException 
class OptionalDataException extends ObjectStreamException
//OutputStream 
abstract class OutputStream implements Closeable, Flushable 
//OutputStreamWriter 
class OutputStreamWriter extends Writer
//PipedInputStream 
class PipedInputStream extends InputStream
//PipedOutputStream 
class PipedOutputStream extends OutputStream
//PipedReader 
class PipedReader extends Reader
//PipedWriter 
class PipedWriter extends Writer
//PrintStream 
class PrintStream extends FilterOutputStream implements Appendable, Closeable
//PrintWriter 
class PrintWriter extends Writer
...