IO流
1. 什么是IO流?
IO流:存储和读取数据的解决方案
2. IO流的作用?
- File:用于对文件/文件夹本身的操作
- IO流:用于读写数据(本地文件、网络)
3. IO流按照流向可以分为哪两种流?
- 输出流:程序 -> 文件
- 输入流:文件 -> 程序
4. IO流按照操作文件的类型可以分为哪两种流?
- 字节流:可以操作所有类型的文件
- 字符流:只能操作纯文本文件
5. 什么是纯文本文件?
用windows系统自带的记事本打开并且能读懂的文件
比如:txt文件、md文件、xml文件、lrc文件等等。
字节输出流的基本用法
FileOutputStream
操作本地文件的字节输出流,可以把程序中的数据写到本地文件中
其父类OutputStream是抽象类,不能直接创建它的对象
书写步骤:
- 创建字节输出流对象
- 写数据
- 释放资源
FileOutputStream书写细节
1. 创建字节输出流对象
FileOutputStream fos = new FileOutputStream("");(在文件与程序之间创建了一条输出流通道,使得数据得以从程序写向文件)
- 细节1:参数是字符串表示的路径或者File对象(new File(""))都是可以的
- 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
- 细节3:如果文件已经存在,则会清空文件(覆盖是write的功能,创建对象调用的构造方法只会把文件清空)
2. 写数据
细节:write方法的参数是正数,但是实际上写到本地文件中的正数在ASII上对应的字符
3. 释放资源
细节:每次使用完流之后要释放资源,否则Java会一直占用这个文件,无法在资源管理器中删除该文件
字节输出流写出数据的三种方式
1. 写出正数
2. 写出字节数组,把输入的字符串转换成字符数组
String str = "abc"
byte[] br = str. getBytes(); //把字符串"abc"转换成计算机能识别的字节数组[97,98,99]
3. 换行写:\r\n
4. 追加写入:
FileOutputStream fos = new FileOutputStream(路径,true);
第二个参数传入true,就不会把已有的文本内容删除
字节输入流的基本用法
FileInputStream书写细节
1. 创建字节输入流对象
细节:如果文件不存在,就直接报错,写出流会创建文件,因为目的是写入,但读出流文件不存在创建了也只是个空文本,无法读出
2. 读取数据
- 细节1:一次读一个字节,读出来的是数据再ASII上对应的数字
- 细节2:读到文件末尾了,read方法返回-1,如果读到-1,会把-1拆成- 和1,再转化为对应的ASII
- 细节3:read()表示读取数据,而且是读取一个数据就移动一次指针,
- 细节4:循环读取的时候必须用变量接收
while( (int b = fis.read())! = -1){
System.out.println(char(b));
}
如果不用变量接收,while和sout中都传入fis.read(),文本内容为abc时读到的分别时98和-1。因为调用两次fis.read()指针移动了两次
3. 释放资源
细节1:每次使用完必须要释放资源(fis.close();)
浙公网安备 33010602011771号