黑马程序员:Java基础总结----IO(Input Output)流概述

时间:2023-02-19 17:18:24
黑马程序员:Java基础总结


IO(Input Output)流概述
 ASP.Net+Android+IO开发.Net培训、期待与您交流!



  IO(Input Output)流概述
 通过数据流、序列化和文件系统提供系统输入和输出。 


流按操作数据分为两种:字节流与字符流 。

流按流向分为:输入流,输出流。



IO流常用基类

字节流的抽象基类:

InputStream 此抽象类是表示字节输入流的所有类的超类。
OutputStream 此抽象类是表示输出字节流的所有类的超类。


字符流的抽象基类:

Reader 用于读取字符流的抽象类。
Writer 写入字符流的抽象类。


他们都是抽象类,要new 就必须有匿名内部类实现相应方法:
            InputStream inputStream = new InputStream() {                                     @Override                   public int read() throws IOException {                         // TODO Auto-generated method stub                         return 0;                  }            };
注:由这四个类派生出来的子类名称都是 以其父类名作为子类名的后缀。

字节流已知子类(以inputStream部分为例)
FileInputStream FileInputStream 从文件系统中的某个文件中获得输入字节。
BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。
ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
PipedInputStream 管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。
DataInputStream 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。
ByteArrayInputStream ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。

不常用
FilterInputStream FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
PushbackInputStream PushbackInputStream 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。
SequenceInputStream SequenceInputStream 表示其他输入流的逻辑串联。


字符流已知子类(以reader部分为例)
FileReader 用来读取字符文件的便捷类。
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
LineNumberReader 跟踪行号的缓冲字符输入流。

不常用
CharArrayReader 此类实现一个可用作字符输入流的字符缓冲区。
FilterReader 用于读取已过滤的字符流的抽象类。
PipedReader 传送的字符输入流。
PushbackReader 允许将字符推回到流的字符流 reader。
StringReader 其源为一个字符串的字符流。


字节流与字符流间已知桥梁
InputStreamReader InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
OutputStreamWriter OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。

IO流中直属于obj的类
File 文件和目录路径名的抽象表示形式。
RandomAccessFile 此类的实例支持对随机访问文件的读取和写入。该类只能操作文件


IO程序的书写

导入IO包中的类--------进行IO异常处理-------- 在finally中对流进行关闭

流操作规律:明确源和目的:

数据源:读取,InputStream和Reader

目的:写入:OutStream和Writer

数据是否是纯文本:

是:字符流,Reader,Writer

否:字节流,InputStream,OutStream
明确数据设备:

源设备:内存、硬盘、键盘

目的设备:内存、硬盘、控制台

是否提高效率:用BufferedXXX

源设备,
     键盘 System.in,硬盘 FileStream,内存 ArrayStream。
目的设备:
     控制台 System.out,硬盘FileStream,内存 ArrayStream





 ASP.Net+Android+IO开发.Net培训、期待与您交流!