「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战」
生命不息,学习不止
题外话
废话不多说,上货
IO概述
---什么是IO (输入,输出 Input, Output)
---什么是流 一组有序的,有起点和终点的数据的集合,比如文件流,网络流等
---和文件的区别 , 文件是数据的一种静态存储方式, 流是数据在传输的时候的一种形态
java 对数据的操作都是通过流的方式进行的
java 中对流的操作所有的类都放在java.io包中
流按方向分 输入流,输出流 //如果把数据读到内存中,叫输入, 从内存往外,叫输出
流按类型分 字符流,字节流
java io体系中,主要有四个抽象基类
字节流: InputStream , OutputStream
字符流: Reader ,Writer
其他的所有的IO相关的类,都是由它们派生的 , 所有的字节流的,都是以InputStream, 或 OutputStream 结尾 , FileInputStream ,FileOutputStream FileReader , FileWriter
字符流
Writer -- BufferedWriter
CharArrayWriter
OutputStreamWriter --FileWriter
FilterWriter
PipedWriter
StringWriter
//创建一个文件,写入一些内容
static void test() throws IOException {
Writer wr =new FileWriter("c:/1.txt",true); //没有这个文件,则创建,有,默认是覆盖了,后面的true表示以追加的模式写入
wr.write("白日依山尽"); //把内容写到了系统的缓冲区中
wr.write("\r\n"); //写入回车换行
wr.write("黄河入海流");
wr.flush(); //刷缓冲区
wr.close(); //流在用完以后,一定要关闭,有了 close ,上面的 flush 可以省
}
字符流 Reader
重要用于从文件中读取数据
int read() //读取单个字符 如果已到达流的末尾,则返回 -1 ,它的返回值,代表读到的数字的码值
int read(char[] cbuf) //将字符读入数组 如果已到达流的末尾,则返回 -1,它的返回值代表读到的字符个数
abstract int read(char[] cbuf, int off, int len) // 将字符读入数组的某一部分
缓冲流和装饰模式
缓冲流 又叫包装流
BufferedReader , BufferedWriter
缓冲流中含有缓冲区,提高读写性能
//这里的缓冲区,不是系统提供的缓冲区,而是在 缓冲流的类内部有一个自已定义的缓冲区
缓冲流用来对流进行包装
缓冲流能对流进行一些增强
BufferedReader :
BufferedReader(Reader in) //使用默认的缓冲区 8192 字节
BufferedReader(Reader in, int sz) //可以用sz这个参数自已指定缓冲区大小
装饰设计模式:
Decorator模式(别名 Wrapper):动态将职责附加到对象上, 若要扩展功能,装饰者提供了比继承更具弹性的代替方案 当要对已有的对象进行功能增强时,可以定义类,将已有对象传入, 基于已有对象的功能,并提供加强功能。那么自定义的该类就称为装饰类。 装饰类通常会通过构造方法接收被装饰的对象,并基于被装饰的对象的功能,提供更强的功能
下一篇继续讲Javaio,敬请期待
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!