JavaIO基础

简介:I/O是Input/Output的缩写,I/O集数是十分实用的技术,用于处理数据传输。如读写文件,网络通讯等。在java中对于数据的输入/输出操作以“流(stream)”的方式进行,在java.io包下提供了各种“流”类和接口,用来获取不同种类的数据,并通过方法输入或输出数据。

流:个人理解为数据在程序和文件之间的路径。

1)按流向不同分类:将数据从java程序(内存)写入文件(磁盘)为输出流,反之从文件读入为输入流。

2)按操作数据单位分类:字节流(8bit)字符流(按字符-----跟文件编码方式有关)

3)按流的角色分类:节点流,处理流/包装流

常用类体系图如下:

 字节输入流 InputStream

常用的子类:
1.FilelnputStream:文件输入流
2.BufferedlnputStream:缓冲字节输入流
3.ObjectlnputStream:对象字节输入流

常用方法:

  • read() :返回输入流中下一个字节的数据。返回的值介于 0 到 255 之间。如果未读取任何字节,则代码返回 -1 ,表示文件结束。
  • skip(long n) :忽略输入流中的 n 个字节 ,返回实际忽略的字节数。
  • available() :返回输入流中可以读取的字节数。
  • close() :关闭输入流释放相关的系统资源。
  • readAllBytes() :读取输入流中的所有字节,返回字节数组。
  • readNBytes(byte[] b, int off, int len) :阻塞直到读取 len 个字节。
  • transferTo(OutputStream out) : 将所有字节从一个输入流传递到一个输出流。

字节输出流Outputstream

常用方法 :

  • write() :将指定参数写入输出流。
  • flush() :刷新此输出流并强制写出所有缓冲的输出字节。
  • close() :关闭输出流释放相关的系统资源。

字符输入流Reader

Reader用于从源头(通常是文件)读取数据(字符信息)到内存中,java.io.Reader抽象类是所有字符输入流的父类。

常用方法:

  • write(int b) :将特定字节写入输出流。
  • write(byte b[ ]) : 将数组b 写入到输出流,等价于 write(b, 0, b.length)
  • write(byte[] b, int off, int len) : 在write(byte b[ ]) 方法的基础上增加了 off 参数(偏移量)和 len 参数(要读取的最大字节数)。
  • flush() :刷新此输出流并强制写出所有缓冲的输出字节。
  • close() :关闭输出流释放相关的系统资源。

字符输出流Writer

Writer用于将数据(字符信息)写入到目的地(通常是文件),java.io.Writer抽象类是所有字符输出流的父类。

  • read() : 从输入流读取一个字符。
  • read(char[] cbuf) : 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中,等价于 read(cbuf, 0, cbuf.length)
  • read(char[] cbuf, int off, int len) :在read(char[] cbuf) 方法的基础上增加了 off 参数(偏移量)和 len 参数(要读取的最大字符数)。
  • skip(long n) :忽略输入流中的 n 个字符 ,返回实际忽略的字符数。
  • close() : 关闭输入流并释放相关的系统资源。

文章较多参考JavaGuide网站的io目录

总结:1注意文件/文件夹创建失败的情况,应用try(){...}catch(){}处理异常。

           2四大抽象类名为其相关子类名的后缀,方便记忆

           3各种类方法有一定程度上的重合,注意触类旁通

           4以“套娃”(在存在的流(节点流或处理流)之上)理解Buffer的各种类方法,更好理解它的高效

           5输入输出站在程序的角度更好理解

           6对象流在序列化的应用

           

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值