JavaIo

153 阅读3分钟

「这是我参与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,敬请期待

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述