JAVA I/O流阶段性小结
前提概要:
刚刚接触I/O流的时候是在学校听专业课老师讲课,老师讲的特别简单,当时以为老师讲得简单所以该知识点就不重要,再加上自己当时不怎么喜欢敲代码,所有就放在了一边,到了暑假自己系统学习了才发现I/0特别重要(虽然目前还没怎么应用),所以特地写一个小总结,如有不足之处还请各位大神指出,我定及时改正。
大纲图
1.字节流(InputStream)
类 | 功能 | 构造器参数及如何使用 |
ByteArrayInputStream | 允许将内存的缓冲区当作InputStream使用 | 缓冲区,字节将从中取出,作为数据源:将其与FilterInputStreamD对象相连以提供有用接口 |
StringBufferInputStream |
将String转换成InputStream | 字符串,底层实现实际使用StringBuffer. 作为数据源:将其与FilterInputStreamD对象相连以提供有用接口 |
FileInputStream |
用于从文件中读取信息 | 字符串,表示文件名,文件或FileDescriptor对象 作为数据源:将其与FilterInputStreamD对象相连以提供有用接口 |
PipeInputStream | 产生用于写入相关PipedOutputStreamde数据,实现管道化概念 | PipedOutputStream 作为多线程中的数据源:将其与FilterInputStreamD对象相连以提供有用接口 |
SequenceInputStream |
将两个或多个InputStream对象转换成单一InputStream |
两个InputStream对象或者一个容纳InputStream对象容器的Enumeration |
FilterInputStream |
抽象类,作为“装饰器”的接口 |
|
2.字节流(OutputStream)
类 | 功能 | 构造器参数及如何使用 |
ByteArrayOutputStream | 在内存中创建缓冲区,所有送往“流”的数据都要放置在此缓冲区 | 缓冲区初始化尺寸, 用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
FileOutputStream |
用于将信息写至文件 | 字符串,表示文件名,文件或FileDescriptor对象 用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
PipedOutputStream | 任何写入其中的信息都会自动作为相关PipedInputStream的输出,实现管道化概念 | PipedInputStream 指定用于多线程的数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
FilterOutputStream |
抽象类,作为“装饰器”的接口 |
|
3.字符流(Reader)
4.字符流(Writer)
虽然说以上4个表列出了很多有关于I/O的知识点,但是有许多我目前还用不到,以后用到了会慢慢补上,接下来就一起来学习一下我们最常用的I/O流。直接上代码-.-
1.字节流读取文件内容
2.字节流写文件
3.字符流读取文件
4.字符流写文件
对比以上代码可以看出,不管是字节流还是字符流,都是以最简单的方法read(),writer().为基础,可以写单个字节(字符),可以读单个字符(字节)。同样也可以读(写)字符(字节)数组。(使用流后要记得关闭)
5.用字符流实现简单的文本复制
6.字节流实现复制功能
字符流其实不仅仅可以实现文本文件的复制,还可以实现压缩文件,图片等文件的复制,具体实现方式就不一一列出,步骤和文本文件的复制差不多
7.缓冲流:简单来说,缓冲流能进一步提高数据的传输速度,其中提供的readline()方法,如果该方法的返回值为null时,就说明到达了文件末尾
还有很多东西没学,目前正在一步一步探索中,以后各种博客会坚持更新,和广大编程爱好者共同进步。