java学习笔记之IO流

本文详细介绍了Java中的IO流,包括IO流的分类、四大抽象类及其实现类。重点关注了字符流和字节流的使用,如FileInputStream、FileOutputStream、CharArrayReader、CharArrayWriter等,并通过实例演示了数据写入和读取的过程。同时,文章提到了编码与解码问题,强调了在处理不同编码文件时避免乱码的策略。
摘要由CSDN通过智能技术生成

1、IO流分类

1)流向:(以程序为中心)
输入流:数据流进程序
输出流:数据流出程序
2)数据:
字节流:二进制,可以处理一切文件,比如纯文本、音频、视频等
字符流:字符,只能处理纯文本
3)功能:
节点流:包裹源头,读取或写出数据(跟数据源或目的地打交道)
处理流:包裹节电流,增强功能,提供性能(与其它的流打交道)

2、IO四大抽象类

1)抽象类:InputStream、OutputStream、Reader、Writer
2)具体类:
a、以InputStream或Reader结尾的为输入流,以OutputStream或Writer结尾的为输出流。
b、以Stream结尾为字节流,以Reader或Writer结尾为字符流。
c、以InputStream结尾的为字节输入流,以OutputStream结尾的为字节输出流;以Reader结尾的为字符输入流,以Writer结尾的为字符输出流。

3、具体类

这里写图片描述

1)节点流:
文件:FileInputStream、FileOutputStream
FileReader、FileWriter
数组:ByteArrayInputStream、ByteArrayOutputStream
CharArrayReader、CharArrayWriter
键盘:System.in
显示屏:System.out
2)处理流:
缓冲流:增强性能,内部有一个缓冲池(如何提高性能
BufferedInputStream、BufferedOutputStream
BufferedReader、BufferedWriter
转换流:将字节转换为字符
如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为转换流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件
InputStreamReader、OutputStreamWriter
数据流:基本类型(8大基本类型和字符串)+数据,允许直接写入或读取基本类型数据
对象流:引用类型+数据,允许直接写入或读取对象
必须序列化的对象才能读取和写入(即必须实现java.io.Serializable接口);
序列化的类中,如果某成员变量不允许序列化,可在该成员变量类型前加trasient关键字。
打印流:可以方便的打印,并且可以格式化输出
PrintStream、PrintWriter

代码示例:

1)将基本数据+类型写入到数组中,并从数组中读取

分析:目的地:数组
数据源:数组
要求保留数据+类型,且为基本数据
选择流:节点流:ByteArrayOutputStream、ByteArrayInputStream
处理流:DataOutputStream、DataInputStream(保留数据+类型)
BufferedOutputStream、BufferedInputStream(提高性能,可要可不要)

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值