1.IO的概述
要点
\1. IO流的理解(数据在不同的设备之间流动,例如:内存,硬盘,) 硬盘可以持久化存储.
读取文件内容
写入文件
2.输入流,输出流以什么为参照??
以内存为标准
读取文件(硬盘---->内存) 输入流
写入文件(内存----->硬盘) 输出流
2.IO的分类
3.字节流-字节输出流快速入门
要点
\1. 流体系
字节流
输入流 InputStream(抽象)
输出流 OutputStream(抽象)
FileOutputStream 具体类
字符流
输入流 Reader
输出流 Writer
\2. 流的构造方法
FileOutputStream(String/File)
\3. 流的大体操作步骤(1.创建流(new) 2.操作流(读/写). 3.关闭流(close))
4.字节流-注意事项
5.字节流–一次写多个数据
- 写数据的方法分类
方法名 | 说明 |
---|---|
void write(int b) | 将指定的字节写入此文件输出流 一次写一个字节数据 |
void write(byte[] b) | 将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据 |
void write(byte[] b, int off, int len) | 将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据 |
- 代码示例
public class FileOutputStreamDemo02 {
public static void main(String[] args) throws IOException {
//FileOutputStream(String name):创建文件输出流以指定的名称写入文件
FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
//FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件
// FileOutputStream fos = new FileOutputStream(new File("myByteStream\\fos.txt"));
//void write(int b):将指定的字节写入此文件输出流
// fos.write(97);
// fos.write(98);
// fos.write(99);
// fos.write(100);
// fos.write(101);
// void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流
// byte[] bys = {97, 98, 99, 100, 101};
//byte[] getBytes():返回字符串对应的字节数组
byte[] bys = "abcde".getBytes();
// fos.write(bys);
//void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流
// fos.write(bys,0,bys.length);
fos.write(bys,1,3);
//释放资源
fos.close();
}
}
6.字节流–两个问题
要点
- 字节输出流的追加写入
- 写入换行符
System.lineSeparator(); //返回系统换行符
7.字节流-try…catch捕获异常
- 异常处理格式
- try-catch-finally
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}finally{
执行所有清除操作;
}
- finally特点
- 被finally控制的语句一定会执行,除非JVM退出
- 代码示例
public class FileOutputStreamDemo04 {
public static void main(String[] args) {
//加入finally来实现释放资源
FileOutputStream fos = null;
try {
fos = new FileOutputStream("myByteStream\\fos.txt");
fos.write("hello".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
8.字节流–小结
要点
1.流体系
OutputStream: 写入字节
构造方法:
FileOutputStream(String/File)
成员方法:
1 void write(int b) 一次写一个字节数据
2 void write(byte[] b) 一次写一个字节数组数据
3 void write(byte[] b, int off, int len) 一次写一个字节数组的部分数据
4 close(); 关闭流,释放资源
InputStream: 读取字节
构造方法:
FileInputStream(String/File)
2.流的操作步骤
创建流
操作流
关闭流
9.字节流–字节输入流基本学习
10.字节流-读多个字节(循环读取)
11.字节流–文件复制
12.字节流-定义小数组拷贝
核心方法
13.字节流-小数组拷贝原理
14.缓冲流-一次读写一个字节代码实现
要点
理解下缓冲流
缓冲流 = 基本流 + 缓冲区
效率高
缓冲流的构造方法
BufferedInputStream(InputStream in):默认缓冲区大小
BufferedOutputStream(OutputStream out)
方法和普通流一样
代码示例
//1. 创建对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(原始文件路径));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(目标文件路径));
//2. 读写数据
int b;
while((b = bis.read())!=-1){
bos.write(b);
}
//3. 释放资源
bis.close();
bos.close();
15.缓冲流-一次读写一个字节原理
16.缓冲流-一次读写一个字节数组原理
17.字节流小结
1.流的体系
InputStream(抽象类): 读取
构造方法:
FileInputStream(String/File)
BufferedInputStream(InputStream):高效流 = 基础流 + 缓冲区
成员方法:
1 int read() 一次读一个字节数据
2 int read(byte[] b) 一次读一个字节数组数据
OutputStream(抽象类):写入
构造方法:
FileOutputStream(String/File)
BufferedOutputStream(OutputStream):高效流 = 基础流 + 缓冲区
成员方法:
1 void write(int b) 一次写一个字节数据
2 void write(byte[] b) 一次写一个字节数组数据
3 void write(byte[] b, int off, int len) 一次写一个字节数组的部分数据
4 close(); 关闭流,释放资源
2.流的操作步骤
1.创建流
2.操作流(读取/写入)
3.释放资源
3.拷贝文件的四种方式
字节流复制任意文件,一次读写一个字节
字节流复制任意文件,一次读写一个字节数组
字节缓冲流复制任意文件,一次操作一个字节
字节缓冲流复制任意文件,一次操作一个字节数组