IO流的概述
IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中java.io
IO流的分类
1.按照数据流向,站在内存角度,
输入流,读入数据
输出流,写出数据
2.按照数据类型
字节流:可以读写任何类型的文件,比如音频,视频,文本文件
什么情况下使用哪种流呢?
如果数据所在的文件通过windows自带的记事本打开并能够读懂里面的内容就用字符流,其他用字节流。
IO流基类概述
1.字节流的抽象基类
InputStream,OutputStream
2.字符流的抽象基类
Reader,Writer
(由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀)
FileOutputStream构造方法
FileOutputSream(File file )
FileOutputSream(String name )
FileOutputStream注意事项:
1.创建字节输出流做了几件事情
a.调用系统资源创建.txt文件
b.创建了一个fos对象
c.把fos对象指向这个文件
2.为什么一定要close( )?
a.通知系统释放关于管理.txt文件的资源
b.让IO流对象变成垃圾,等待垃圾回收器对其回收
FileOutputSream的三个write( )方法
1.public void write(int b):写一个字节,超过一个字节,砍掉前面的字节
2.public void write(byte[ ] b):写一个字节数组
3.public void write(byte[ ] b,int off,int len):写一个字节数组的一部分
FileInputSream读取数据一次一个字节
int read( ):一次读取一个字节,如果没有数据,返回的就是-1
FileInputSream读取数据一次一个字节数组
int read( byte[ ] b):一次读取一个字节数组,返回的int类型的值表示的意思就是读取到的字节的个数,如果没有数据了就返回-1
BufferOutputStream写出数据
缓冲思想:字节流一次读写一个数组的速度明显比一次读取一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候也考虑到了这样的设计思想,所以提供了字节缓冲区流
BufferOutputStream(OutputStream out )
BufferInputSream读取数据
BufferInputSream(InputSream in )