IO流

1. 什么是IO流?
IO流:存储和读取数据的解决方案

2. IO流的作用?

  • File:用于对文件/文件夹本身的操作
  • IO流:用于读写数据(本地文件、网络)

3. IO流按照流向可以分为哪两种流?

  • 输出流:程序 -> 文件
  • 输入流:文件 -> 程序

4. IO流按照操作文件的类型可以分为哪两种流?

  • 字节流:可以操作所有类型的文件
  • 字符流:只能操作纯文本文件

5. 什么是纯文本文件?
用windows系统自带的记事本打开并且能读懂的文件
比如:txt文件、md文件、xml文件、lrc文件等等。

字节输出流的基本用法

FileOutputStream
操作本地文件字节输出流,可以把程序中的数据写到本地文件中
其父类OutputStream是抽象类,不能直接创建它的对象

书写步骤

  1. 创建字节输出流对象
  2. 写数据
  3. 释放资源

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();)

posted @ 2026-05-14 10:46  ZealousMclaren  阅读(6)  评论(0)    收藏  举报