浅谈IO流

本文详细介绍了Java中的IO流,包括字节流(处理所有类型文件)和字符流(仅限文本文件),以及它们的基础操作方法。还涵盖了缓冲流、转换流(如InputStreamReader和OutputStreamWriter)的概念,以及序列化和反序列化的功能在Java中的应用。
摘要由CSDN通过智能技术生成

初识Java IO流

I:input:输入流:程序——》文件

O:output:输出流:文件——》程序

IO流可以分为两类

字节流:可以操作所有类型的文件(图片,音频,文本,视频)

字符流:只能操作纯文本文件(txt,md,xml,lvc)

IO流的基本方法

InputStream 类

1、int read():读取数据

2、int read(byte b[], int off, int len):从第 off 位置开始读,读取 len 长度的字节,然后放入数组 b 中

3、long skip(long n):跳过指定个数的字节

4、int available():返回可读的字节数

5、void close():关闭流,释放资源

OutputStream 类

1、void write(int b): 写入一个字节

2、void write(byte b[], int off, int len): 将数组 b 中的从 off 位置开始,长度为 len 的字节写入

3、void flush(): 强制刷新,将缓冲区的数据写入

4、void close():关闭流

Reader 类

1、int read():读取单个字符

2、int read(char cbuf[], int off, int len):从第 off 位置开始读,读取 len 长度的字符,然后放入数组 b 中

3、long skip(long n):跳过指定个数的字符

4、int ready():是否可以读了

5、void close():关闭流,释放资源

Writer 类

1、void write(int c): 写入一个字符

2、void write( char cbuf[], int off, int len): 将数组 cbuf 中的从 off 位置开始,长度为 len 的字符写入

3、void flush(): 强制刷新,将缓冲区的数据写入

4、void close():关闭流

字节流

// 使用文件名称创建流对象
FileOutputStream fos = new FileOutputStream("fos.txt",true);     
// 字符串转换为字节数组
byte[] b = "abcde".getBytes();
// 写出从索引2开始,2个字节。索引2是c,两个字节,也就是cd。
fos.write(b);
// 关闭资源
fos.close();

字符流

// 使用文件名称创建流对象
FileReader fr = new FileReader("abc.txt");
// 定义变量,保存数据
int b;
// 循环读取
while ((b = fr.read())!=-1) {
    System.out.println((char)b);
}
// 关闭资源
fr.close();

缓冲流

缓冲流的工作原理:将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。这样可以减少系统的 I/O 操作次数,提高系统的 I/O 效率,从而提高程序的运行效率。

自带长度为8192的缓冲区

对于字符流提升不明显(本身具有缓冲区)

转换流

转换流:是字符流和字节流之间的桥梁

转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。

InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行转换。

反/序列化流

反/序列化流:可以把Java的对象写到本地文件中

序列化是指将一个对象转换为一个字节序列(包含对象的数据对象的类型对象中存储的属性等信息),以便在网络上传输或保存到文件中,或者在程序之间传递。在 Java 中,序列化通过实现 java.io.Serializable 接口来实现,只有实现了Serializable接口的对象才能被序列化。

反序列化是指将一个字节序列转换为一个对象,以便在程序中使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值