Java IO

Java IO
一、基础接口

Closeable接口:拥有close()方法,子类可以重写实现关闭的功能。

AutoCloseable接口 : java 7增加的自动关闭资源接口


二、输入流

最基本的流: 输入流InputStream

大多数输入流都是继承自InputStream

1、FileInputStream

FileInputStream 用于从文件读取信息。


2、FilterInputStream:
FilterInputStream继承了InputStream,可以通过FilterInputStream从InputStream里读入数据
FilterInputStream 的作用是用来“封装其它的输入流,并为它们提供额外的功能”。
它的常用的子类有BufferedInputStream和DataInputStream。

FilterInputStream常见的方法如下:

复制代码
    int avaliable();查看当前流中可供读取的字节数。  
      
    void close();关闭当前流、释放所有与当前流有关的资源。  
      
    synchronized void mark(int readlimit);标记当前流的读取的位子。  
      
    boolean markSupport();查看当前流是否支持mark。  
      
    int read();读取当前流中的下一个字节、并以整数形式返回、若读取到文件结尾则返回-1int read(byte[] b);将当前流中的字节读取到字节数组b中、返回实际读取的字节数  
      
    int read(byte[] b, int off, int len);将当前流中的len个字节读取到从下标off开始存放的字节数组b中。  
      
    synchronized reset();重置当前流的读取位置到最后一次调用mark方法标记的位置。  
      
    long skip(long n);跳过(抛弃)当前流中n个字节。返回实际抛弃的字节数。  
复制代码

 

3、BufferedInputStream的作用就是为“输入流提供缓冲功能,以及mark()和reset()功能”。
4、DataInputStream :
用来装饰其它输入流,允许读取不同的基本类型数据以及String对象
5、ByteArrayInputStream:允许内存中的一个缓冲区作为InputStream使用从中提取字节的缓冲区/作为一个
数据源使用。通过将其同一个 FilterInputStream 对象连接,可提供一个有用的接口
其他:StringBufferInputStream、PipedInputString、SequenceInputStream

三、输出流

最基本的流: OutputStream

同样的,大多数输出流都是继承自OutputStream

1.FileOutputStream

2.类似于输入流,输出流也有FilterOutputStream:、DataOutputStream、ByteArrayOutputStream

3.常用方法:

复制代码
    void write(byte b);将一个字节写入到当前输出流管道中。  
      
    void write(byte[] b);将字节数组b中所有字节写入到当前输出流管道中。  
      
    void write(byte[] b, int off, int len);将字节数组b从下标off开始、len个字节写入当前输出流管道中    
      
    void flush();flush当前流、将当前流中的所有数据冲刷到目的地中。  
      
    void close();关闭当前流、释放与当前流有关的所有资源。  
复制代码


4.BufferedOutputStream :用它避免每次发出数据的时候都要进行物理性的写入,要求它“请先在缓冲区里
找”。可调用 flush(),对缓冲区进行刷新 OutputStream,可选缓冲区大小/本身并不能提供一个接口,只
是发出使用缓冲区的要求。需要同一个接口对象连接到一起


三、装饰器
装饰器:利用层次化对象动态和透明地添加单个对象的能力的做法  
装饰器方案规定封装于初始化对象中的所有对象都拥有相同的接口

同样是增强对象的功能,为什么使用装饰器, 而不是继承?

比如功能一,功能二,功能三。装饰器可以根据需要增强功能,随意组合装配。

而由于功能的随机组合有六种,想通过继承增强功能要写六个类。当需要的功能较多时,组合总和太大,通过继承完成不太理想。

posted on   乐之者v  阅读(221)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示