由于IO流的内容较多,所以这一块的内容会分为上中下
,今天主要编写上篇
文章目录
一、IO流概述
学习IO流时,我们需要先搞清楚内存和硬盘的简单概念
专有名词 | 介绍 |
内存 | 临时存储数据 |
硬盘 | 永久存储数据 |
I | input 输入(读取) |
O | output 输出 (写入) |
流 | 数据(字符、字节) |
二、IO流图解
三、IO流分类
IO流分为字节类以及字符流
,这两种流又分为输入流以及输出流
\ | 输入流 | 输出流 |
字节流 | 字节输入流 InputStream | 字节输出流 OutputStream |
字符流 | 字符输入流 Reader | 字符输出流 Writer |
四、字节流
1、简介
不管是文档还是图片等,一切皆为字节
2、OutputStream 字节输出流
①、该类是抽象类,无法创建对象,需要使用到它的子类
②、提供了多种方法,子类可以调用
方法一: public void close() : 关闭此输出流并释放与此流相关联的任何系统资源
方法二: public void flush() : 刷新此输出流并强制任何缓冲的输出字节被写出
方法三: public void write(byte[] b) : 将b.length字节从指定字节数组写入此输出流
方法四: public void write(byte[] b,int off ,int len) : 从指定字节数组中写入len长的字节,从off开始
方法五: public abstract void write(int b): 将指定的字节输出流
2.1、注意
①、使用write方法传入一个参数,如果参数ASCII码在0-127之间则使用ASCII中的内容,其他值查询系统默认码表(中文系统GBK)
②、如果要在文件中打印出来100这个数字,需要写入三个字节,1:49 、0:48、0:48
③、如果第一个字节为正数(0-127),则会在ASCII表中查询并输出
如果第一个字节为负数,则第一个字节会和第二个字节组成一个中文显示,查询系统默认码表
2.2、代码演示
1、通过数组的形式一次写多个字节
byte[] b = {65,66,67,68,69};
try {
FileOutputStream fos = new FileOutputStream("E:\\notepad_java\\a.txt");
fos.write(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
文档中的内容:ABCDE
2、写入字符的方法
byte[] b1 = "嗨".getBytes();
try {
FileOutputStream fos1 = new FileOutputStream("E:\\notepad_java\\a.txt");
fos1.write(b1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
文档中的内容:嗨
2.3、FileOutputStream子类
2.3.1、简介
文件字节输出流
把内存中的数据写到硬盘中的文件中
2.3.2、构造函数
FileOutputStream (String name) : 目的地是一个文件的路径
FileOutputStream(File file):目的地是一个文件
2.3.3、构造函数的作用
1、创建一个FileOutputStream对象
2、会根据构造方法中传递的文件/文件路径,创建一个空的文件
3、会把FileOutputStream对象指向创建好的文件
2.3.4、使用步骤
1、创建FileOutputStream对象,构造方法中写入数据的目的地
2、调用对象中的write()方法,将数据写入到文件中
3、调用close()方法释放资源
这里只有很小的一部分知识点,可以蹲一蹲,中篇和下篇会在明后两天出的~~