Java I/O流类库总结

Java中的I/O输入和输出


1 、流:代表任何有能力产出数据和数据源对象,或者有能力接收数据的数据端对象(流概念屏蔽了I/O设备中处理数据的底层细节);

2、Java类库中的I/O类分为3大类:
1)InputStream/Reader:输入基类
(2)OutputStream/Writer:输出基类
(3)RandomAccessFile:随机文件读取写入类

3、两组基类的区别:
(1)InputStream/OutputStream:用于 面对字节byte的I/O流读写
(2)Reader/Writer:用于 面对字符和兼容Unicode的I/O流读写

4、可以使用相应的 adpater(适配器)将面对字节流包装为面对字符流,如:
InputStreamReader可以将InputStream装换为Reader
InputStreamReader in = new InputStream(new InputStream(......));
5、尽可能使用Reader和Writer,一旦无法成功编译,再使用面对字节流InputStream/OutputStream;
除非有些类库只支持面向字节流,如java.util.zip;

6、一般很少使用单一的类来创建流对象,而是通过叠合对个对象来提供所期望的功能(装饰器模式);

7、3大流基类的read、write的区别





18.2 InputStream和OutputStream

1、InputStream/OutputStream可接受的数据源:
①字节数组;
②String对象;(OutputStream不是能是String,可以使用字节数组自己创建)
③文件;
④管道,(一端输入,一端输出);
⑤一个由其他种类的流组成的序列,以便将其收集合并在一个流内;
⑥其他数据源,如Internet连接等;
※每一种数据源都有相应的InputStream/OutputStream子类,此外 FilterInputStream/FilterOutputStream为修饰器类提供基类;

2、基本包含类
(1)基本类



(2)修饰器类



3、基本内含方法:


  




Reader和Writer

1、适配器类




2、基本内含方法


  





RandomAccessFile


1、RandomAccessFile适用于由大小已知的记录组成的文件,可以使用seek等方法, 对文件实现随机位置读取和写入
2、 只有RandomAccessFile支持搜寻方法,并且只适用于文件,mark,reset等方法,(BufferedInputStream也有这些方法,但是效果不是很理想);
3、RandomAccessFile不是InputStrem和OutputStream继承结构的一部分,除了实现DataInput和DataOutput接口外,和两个结构没有任何联系;
4、在JDK 1.4中,RadnomAccessFile的大多数功能(不是全部)由nio存储映射文件所取代;
     nio储存映射文件链接 :  3-T5.Java.nio储存映射文件


5、RandomAccessFile的一些主要方法:


 

※①RandomAccessFile 的writeType方法是一种覆盖式的写入,即写入的内容将完全覆盖原来偏移量处的相应字节位的内容;
②length返回的长度是以字节byte为单位的;
③seek的偏移是以字节数byte为单位的,一般格式为seek(number * byteMetric)
④各种基本数据类的偏移量
writeBoolean————1byte;
writeByte ———— 1byte;
writeShort ———— 2byte;
writeInt ———— 4byte;
wirteLong ———— 8byte;
writeFloat ———— 4 byte;
writeDouble ———— 8byte;
writeChar ———— 2byte;







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值