java常用IO流功能——转换流,打印流,数据流,序列化流概述

前言:

整理下IO流的相关知识点笔记,打好基础,daydayup!!!

之前整理了下 字节流,字符流和缓冲流,有需要的可以看这里

java常用应用程序编程接口(API)——IO流概述及字节流的使用

java常用IO流功能——字符流和缓冲流概述

转换流

计算机发展以来有很多编码标准,UTF-8,GBK,ASCII,UTF-16等,目前默认使用UTF-8进行编码和解码。但如果在一些情况下,编码和解码使用的标准不一致,则会出现乱码的情况。如图:

这个时候就需要转换流来把文件进行转码。

InputStreamReader(字符输入转化流)

作用:解决不同编码时,字符流读取文本内容乱码的问题

原理:先获取文件的原始字节流,再将其按真实的字符编码转成字符输入流,这样字符输入流中的字符就可以正常显示了。

使用方法

public InputStreamReader(InputStream is ,String charset)把原始的字节输入流,按照指定字符集编码转成字符输入流

示例如下:(运用GBK进行解码)

 OutputStreamReader(字符输出转化流)

作用:可以控制写出去的字符使用什么字符集编码

原理:获取字节输出流,再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就可以用该字符集了

使用方法

public OutputStreamWriter(OutputStream os,String charset)可以把原始的字节输出流,按照指定编码转换成字符输出流

 示例如下:(使用GBK编码)

打印流

打印流是用于输入的工具

PrintStream/PrintWriter(打印流)

作用:打印流可以实现更方便,更高效的打印的数据出去,能实现输入什么就可以打印出什么

使用方法

public void println(Xxx xx)打印任意类型的数据

示例如下:

数据流 

数据流可以写出或写入不同的类型

DataOutputStream(数据输出流)

作用:把数据和其类型一并写出来

使用方法

方法说明
public final void writeByte(int v) throw IOException将byte类型的数据写入基础的字节输出流
public final void writeInt(int v) throws IOException将int类型的数据写入基础的字节输出流
public final void writeDouble(Double v) throw IOException将double类型的数据写入基础的字节输出流
public final void writeUTF(String str) throw IOException将字符串数据以UTF-8编码成字节写入基础的字节输出流
public void write (int/byte[ ]/byte[ ]一部分 )支持写字节数据出去

 示例如下

DataInputStream(数据输入流)

作用:用于读取数据输出流写出去的数据

使用方法

方法说明
public final byte readByte( ) throws IOException读取字节数据返回
public final int readInt( ) throws IOException读取int类型的数据返回
public final double readDouble( ) throws IOException读取double类型的数据返回
public final String  readUTF( ) throws IOException读取字符串数据(UTF-8)返回
public int readInt() / read(byte[ ] )支持读字节数据进来

示例如下

序列化流 

序列化流分为对象序列化和对象反序列化。对象序列化是把java对象写入到文件中去;对象反序列化是把文件里的java对象读出来。

 ObjectOutputStream(对象字节输出流)

作用:把java文件序列化,把java对象存入到文件中

使用方法

public final void writeObject(Object o) throws IOException把对象写出去

 示例如下:(创建User实体类,通过writeObjec方法进行写出保存)

 ObjectInputStream(对象字节输入流)

作用:把java对象进行反序列化,把存储在文件中的java对象读入到内存中

使用方法

public final Object readObject()把存储在文件中的java对象读出

 示例如下:(把保存的java对象取出)

整理结束,撒花!!!

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值