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

黑马程序员: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部分为例)

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

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


字符流已知子类(以reader部分为例)

FileReader用来读取字符文件的便捷类。
BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
LineNumberReader跟踪行号的缓冲字符输入流。

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


字节流与字符流间已知桥梁
InputStreamReaderInputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
OutputStreamWriterOutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 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培训 、期待与您交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值