IO流下

IO流下

一:缓冲流

1.1:缓冲流的概述:

a:定义
	基于字节字符流,它本身是没有读写功能,底层封装了一个8192长度的缓冲区(数组),
提高读写效率,也叫高效流
b:缓冲字节流缓冲字符流
	字节缓冲流:BufferedInputStream BufferedOutputStream
    字符缓冲流:BufferedReader  BufferedWriter

1.2:BufferedInputStream

a: 构造方法:
    BufferedInputStream(InputStream in) 创建一个 BufferedInputStream并保存其参数,输入流 in供以后使用。
    
b:常用方法:
    int read()  :读取一个字节数据
    int read(byte[] bytes) : 读取一个字节数组

1.3:BufferedOutputStream

a:构造方法:
    BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
    
b:常用方法:
    void write(int b) 将指定的字节写入缓冲的输出流。
    public void write(byte[] b)
    void write(byte[] b, int off, int len) 从偏移量 off开始的指定字节数组写入 len字节到缓冲输出流。

1.4:BufferedReader

a: 构造方法
    BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。
    
b:常用方法:
    int read() 读一个字符
    int read(char[] cbuf) 将字符读入数组的一部分。
c:特有方法
	String readLine() //读一行文字。
	 	例子:
	 		while (( line = br.readLine())!= null) {    //
	            System.out.println(line);
	        }

1.5:BufferedWriter

a:构造方法:
    BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。

b:常用方法:
    void write(int c) 写一个字符
    void write(char[] cbuf) 写入字符数组的一部分。
    void write(char[] cbuf, int off, int len) 写入字符数组的一部分。
    void write(String s) 写一个字符串的一部分。
    void write(String s, int off, int len) 写一个字符串的一部分。
c:特有方法
 	bw.newLine();  //在文件中加入换行
 
c:注意
	1.字符缓冲流的基本使用与昨天的字符流一模一样
    2.字符缓冲流,就是底层封装了一个8192的字符数组,提高字符流的读写效率

二:转化流

2.1:转化流的概述

a:问题
 	乱码产生的原因:中文数据读取的前后,编码方式不一致导致的
    GBK:使用2个字节表示一个中文,它的前128个字符完全兼容ASCII码表
    UTF-8:使用3个字节表示一个中文,它的前128个字符完全兼容ASCII码表
b:解决
	InputStreamReader和OutPutStreamWriter可以设置在读取文件,和写
	文件的编码方式。从而解决乱码

2.2:InputStreamReader

a:解码:
InputStreamReader是从字节流到字符流的桥梁:解码

b:构造方法:
    InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
    InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。
    
c:常用方法:
    close()
    int read();
    int read(char[]  chars)

2.3:OutPutStreamWriter

a:解码
	OutputStreamWriter是从字符流到字节流的桥梁: 编码

b:构造方法:
    OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
    OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。

c:常用方法:
    close()
    flush()
    5个写方法

三:序列化流

3.1:序列化流的概述

a:
	可以将对象存储到文件中,可以将文件中的对象取出。

3.2:ObjectInputStream(反序列化)

a: 构造方法:
       ObjectInputStream(InputStream in) 创建从指定的InputStream读取的ObjectInputStream。

 b:常用方法:
       Object readObject() 从ObjectInputStream读取一个对象。
       
c:序列化的版本号
	//我们在从文件夹中读取一个对象。当发现和类的版本号不一致,直接报错
	//所有我们将对象存到文件夹中需要确定版本号。
	private static final long serialVersionUID = -1282452349381031382L;
	

3.3:ObjectOutPutStream(序列化)

a:构造方法:
      ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。
b:常用方法:
      void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。
      
c:注意:
	要进行序列化(把对象存到文件中),必须实现一个接口Serializable,并且从写版本号。
	
d:static和transient在序列化中的使用
	1.静态的内容只跟类有关,所以序列化时静态内容不会被保存
	2.当一个属性不想被序列化,也不能设置为静态,那就使用transient修饰	

四:打印流(了解)

4.1:打印流的概述

4.2:printStream

a:构造方法
	PrintStream(String fileName) 使用指定的文件名创建新的打印流,无需自动换行

b:常用方法:
	print():直接输出内容,但不换行
	println():直接输出内容,但换行

五:总结

5.1:总结

a:总结一
	4个流本身是没有读写功能,都是基于昨天的字节流和字符流进行操作,
所以,今天只要先区分到底是什么流,然后就调用对应流的api
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值