java用io流读写文件代替数据库,IO与文件读写 Java的IO流架构

【一】基于字节的输入流

值得注意的地方有:

①Level 2的输入流,大多数都会指明数据源的形式:例如ByteArray,File,Piped

②Level 3的输入流,则不会出现具体的数据源名字,而是以功能取代:例如Buffered,LineNumber

所以说Level 3的输入流是对Level 2输入流的“封装和过滤”。实际上Level 2的输入流,都继承于一个叫做:FilterInputStream的输入流。

下面是对各个input stream的简介:

①ByteArrayInputStream

从内存中每次读取一个字节的数据,然后保存到内置的缓冲区中。维持一个计数器用来记录从数据源中读入的字节数目。

调用该输入流的close()方法不会产生任何实际的作用。因为它“关闭”的对象是---内存。而不是文件。不会抛出任何的IOException。

②FileInputStream

从文件系统中读取原始的字节数据(raw bytes)。每次读取一个字节

③PipedInputStream

管道输入流,通常它的一端会和数据源连接,另一端和管道输出流(PipedOutputStream) 连接。这样从管输入流读入的任何数据将直接地传输到管道输出流。

通常会有一个独的线程从管道输入流中读取数据,再交给另外一个线程,由另外的线程向管道输出流中写数据。如果使用单个线程进行读写操作,很容易造成资源的死锁。

④SequenceInputStream

把多个输入流按顺序合并成一个输入流

⑤DataInputStream

从底层的其它字节输入流中读取字节,然后转换成与机器无关的原始类型数据(boolean,byte,char)

⑥BufferedInputStream

为底层的其它字节输入流增加一个“缓冲”的功能,除此之外还可以“标记”,“重置”输入流。当这个输出流的对象被创建时,一个内置的缓冲区也就被创建了。

随着底层的输入流的不断读入,缓冲区中的数据也在不同刷新。一次性地从底层的输入流读入多个字节,方便后续的转码工作

【二】基于字节的输出流

值得注意的是:

①在Level 2的输出流,都是以功能来命名的。例如:Print,DataOutput,Buffered

②在Level 3的输出流,则多数都是以数据源的形式来命名的。例如:ByteArray,File,Piped

所以说Level 2的输出流必须依赖于Level 3的输出流,实际上Level 2的输出流,都继承与一个叫做FilterOutputStream的输出流

下面是对各个output stream的简介:

①PrintStream

为底层的输出流添加额外的功能,令到底层的输出流可以方便地输出各种经过“格式化”的数据。和其它输出流不同,该输

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值