io流,持久化存储技术
字节流
OutputStream(抽象类)
FileOutputStream
构造:
构造方法摘要
FileOutputStream(File file) --->创建输出流, 不是以续写方式关联
FileOutputStream(String name) --->创建输出流, 不是以续写方式关联
FileOutputStream(File file, boolean append) ; ----> 让我们创建一个输出流关联文件,以续写的方式来关联
作用:
1.创建一个输出流对象
2.如果你关联的文件,或者文件的字符串不存在的话, 会帮我们创建该文件(只会帮你创建文件,不会帮你创建文件夹,否则报错)createNewFile()
注意:如果存在,就清空内容
3.将对象指向了那个硬盘上的文件
成员方法:
write(int b);--->写单个字节
write(byte[] bytes ); --->写多个字节
write(byte[] bytes, int start, int len); --->写多个字节的一部分
close(); 释放资源
固定步骤:
1.创建输出流对象
2.调用写得方法
3.关闭资源
例如:
//创建输出流对象
FileOutputStream fos = new FileOutputStream("d://b.txt");
//调用写得方法, 写单个字节
fos.write('a');// int b = 97
//调用写得方法,写单个字节
fos.write(97);//int b = 97
//调用写得方法,写多个字节
byte[] arr = {97,98,99};// abc
fos.write(arr);
//关闭资源
fos.close();
InputStream(抽象类)
FileInputStream
构造:
FileInputStream(File file) --->创建输入流,
FileInputStream(String name) --->创建输入流
成员方法
void close()
int read();//效率非常低下, 将读出来的内容,直接返回,
int read(byte[] b);//将读出来的内容放在数组,返回的是有效的读取个数
int read(byte[] b, int off, int len)
字符流
注意事项: 只能操作非二进制数据( 比如图片, 音频,视频…用window记事本打开乱码的东西都是二进制数据)。
Reader(抽象类)
FileReader
构造:
FileReader(String path);
FileReader(File path);
成员方法:
int read();
int read(char[] arr); //一次读一个字符数据的数据, 返回的有效的读取字符的个数
void close();
Writer(抽象类)
FileWriter
构造:
FileWriter(String path);
FileWriter(File file);
FileWriter(String path,boolean append);
作用:
创建输出流
如果文件不存在,会创建文件,不会创建文件夹, 如果存在,先清空内容
将流和文件关联在一起
成员方法
void write(char[] cbuf)
写入字符数组。
abstract void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String str) (重点!!!)
写入字符串。
void write(String str, int off, int len) (重点!!!)
写入字符串的某一部分。
abstract void close()
关闭此流,但要先刷新它。
abstract void flush()
刷新该流的缓冲。
flush方法和close方法的区别:
flush:刷新缓冲区, 流还是可以继续使用
cloase: 在关闭之前刷新缓冲区,然后将流关闭, 流不能再使用了!!!