目录
IO流
IO流即存储和读取数据的解决方案。
File
File表示系统中的文件或者文件夹的路径。利用File我们可以获取文件信息,判断文件的类型,创建文件或文件夹,删除文件或文件夹等等。但是File类只能对文件本身进行操作,不能读写文件里存储的数据。读写数据就需要IO流。
IO流的分类
按照流的方向分类分为输入流(读取)和输出流(写出)。
按照操作文件类型分类分为字节流(可操作所有类型的文件)和字符流(只能操作纯文本文件)。
FileOutputStream
操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。
书写步骤
- 创建字节输出流对象
- 写数据
- 释放资源
注意事项
- 创建字节输出流对象时参数是字符串表示的路径或者File对象。如果文件不存在会创建一个新的文件,但是要保证父级路径存在;如果文件已经存在,则会清空文件。
- 写数据时write方法的参数是整数,但是实际上写到本地文件中的是整数ASCII上对应的字符。
- 每次使用完流之后都要释放资源。
FileOutputStream写数据的三种方法
- 一次写一个字节数据
- 一次写一个字节数组数据
- 一次写一个字节数组的部分数据
off代表起始索引,len代表个数
FileInputStream
操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来。
书写步骤
- 创建字节输入流对象
- 读数据
- 释放资源
read:表示读取数据,每读取一个数据就移动一次指针。
注意事项
- 创建字节输入流对象时如果文件不存在,就直接报错。
- 读取数据时一次读一个字节,读出来的是数据在ASCII上对应的数字。读到文件末尾时,read方法返回-1.
- 每次使用完流必须要释放资源。
FileInputStream循环读取
FileInputStream一次读多个字节
一次读一个字节数组的数据,每次读取会尽可能把数组装满。创建的数组长度一般为1024的整数倍。
- 一次读一个字节数组数据
FileReader
操作本地文件的字符输入流。
书写步骤
1.创建字符输入流对象
2.读取数据
3.释放资源(关流)
- 空参的read方法
- 有参的read方法
注意事项
- 创建字符输入流对象时,如果文件不存在,就直接报错。
- 读取数据时按字节进行读取,遇到中文一次读多个字节,读取后解码,返回一个整数。读到文件末尾,read方法返回-1。
FileWriter
操作本地文件的字符输出流。
书写步骤
- 创建字符流输出对象
- 写数据
- 释放资源
构造方法
成员方法
- 写出一个字符
- 写出一个字符串
- 写出一个字符数组(有续写开关)
注意事项
- 创建字符输出流对象时,参数是字符串表示的路径或者File对象都是可以的。如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的;如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关。
- 写数据时如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符。
- 每次使用完流之后要释放资源。
总结
通过学长的讲解,我补充了一些知识点
1.IO流可形象地理解为一根管,是程序与数据源之间沟通的桥梁。
2.节点流和处理流的区别(结合学长讲解和上网查询):节点流为单独的一根管,是低级流,直接和数据源相接。处理流,也可叫包装流,用于包装节点流,可理解为管套着管,组合使用,可消除不同节点流的实现差异,不直接与数据源相连。
3.缓冲流可使程序变得更加高效,可以对基本的字节字符流进行增强,达到提高数据的读写能力。按照数据类型分类可分为字节缓冲流和字符缓冲流。
- 字节缓冲流:BufferedInputStream,BufferedOutputStream
- 字符缓冲流:BufferedReader,BufferedWriter
小结:虽然每次都预习,但是听的时候还是云里雾里的感觉o(TヘTo),但是还是会继续努力。关于学姐提出的截图问题,我也进行了自查,表格的截图是网课中的截图,这点之后会改为自己做表格;代码的截图是我自己在idea中敲完代码进行的截图,这点之后会改为在csdn中加入代码段,减少截图的出现。总之就是努力努力努力吧!!!