什么是IO流 \ 以及文件输入输出

时间:2021-09-18 21:33:54

一、IO流的分类:

流按照操作数据的类型分为两种:字节流;字符流。

  1.什么是字节流:读取的是文件的二进制数据,不会对二进制做处理,不会解析成看得懂的数据。

  2.什么是字符流:读取的是文件的二进制数据,他会将二进制数据转转换成我们能识别的字符(解码),字符流是以字符为单位的。

 总结(字符流 = 字节流 + 解码);

   3.流按照流的方向分为:输入流和输出流。

如何判断输入和输出:以当期的应用程序为参考,观察数据是流入和流出,如果是流入就是输入。如果是流出就是输出。

二、字节流输入流:

  InputStream:此抽象类是表示字节的输入流的所以类的超类,也是抽象类。  

  使用的是InputStram的子类:FileInputStram。

三、FileInputStram使用步骤以及几个方式来创建和获取:

read:只获取第一个字节          close():关闭资源      

 方法一:每次只读取一个字节

  1.查找目标文件

  2.建立通道

  3.读取数据

  4.关闭资源(释放资源)  

方法二:用循环读取数据提示循环的速度太慢

  1.查找目标文件

  2.建立通道

  3.for读取数据

  4.关闭资源(释放资源)  

方法三:建立缓存区来读取数据 缺点不能够读取一个完整的文件 

  1.查找目标文件

  2.建立通道

  3.创建一个缓存区

  4.读取数据

  5.关闭资源(释放资源)

方式四:建立缓存区和循环的方法来读取

  1.查找目标文件

  2.建立通道

  3.创建一个缓存区

  4.for或者(while)读取数据

  5. 关闭资源(释放资源)   

四、字节流输出流:

 1. OutputStram:他也是所以字节输出流的超类,也是一个抽象的类,使用子类FileOutputStram 文件输出流

 2. FileOutputStram 使用步骤

  1.找到目标文件

  2创建通道

  3.写数据

  4.关闭资源

3. FileOutputStram的使用注意事项:

  1.使用FileOutputStram写数据的时候,如果目标文件不存在,那么就会自己创建一个目标文件对象。

  2.使用FileOutputStram写数据的时候,如果目标文件存在,那么就会先将里面的内容清空在把数据写入。

  3. 使用FileOutputStream写数据的时候,如果目标文件存在,想将数据在原有的基础上追加,这个时候就应该使FileOutputStream(File file, boolean append) 构造方法,  append如果为true表示可以追加数据,反之不信

  4.使用FileOutputStram写数据的时候,用write(int a)方法来写数据,虽然接收的是int,但实际只有一个字节的数据操作的是第八位的二进制,其他的24位全部不要。