Java中的IO操作:字节缓冲流、字符缓冲流、序列化流


本文主要介绍Java中的IO操作:字节缓冲流、字符缓冲流、序列化流。在学习本文前,你需要有一定的Java编程基础,并且了解Java中的IO操作基础知识。现在,我们开始学习吧!


一、字节缓冲流


字节缓冲流是Java IO包中的一个重要类,可以加速输入输出的速度。下面我们来详细了解一下字节缓冲流的函数用法、参数讲解以及代码案例。


1.1 构造函数


字节缓冲流有两个构造函数:BufferedInputStream(InputStream in)BufferedOutputStream(OutputStream out)。这两个构造函数都会使用默认的缓冲区大小,也可以通过使用BufferedInputStream(InputStream in, int size)BufferedOutputStream(OutputStream out, int size),在创建缓冲流时指定缓冲区大小。

BufferedInputStream bin = new BufferedInputStream(new FileInputStream("file.txt"));
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("file.txt"));

1.2 读取数据


使用字节缓冲流读取数据时,可以使用read()函数或read(byte[] b, int off, int len)函数,其中read()函数每次只读取一个字节,而read(byte[] b, int off, int len)函数可以一次读取多个字节。

BufferedInputStream bin = new BufferedInputStream(new FileInputStream("file.txt"));
byte[] bytes = new byte[1024];
int len = -1;
while ((len = bin.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
}

1.3 写入数据


使用字节缓冲流写入数据时,可以使用write()函数或write(byte[] b, int off, int len)函数,其中write()函数每次只写入一个字节,而write(byte[] b, int off, int len)函数可以一次写入多个字节。

BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("file.txt"));
String str = "Hello, world!";
bout.write(str.getBytes());
bout.flush();

二、字符缓冲流


字符缓冲流是Java IO包中的一个重要类,可以加速输入输出的速度。下面我们来详细了解一下字符缓冲流的函数用法、参数讲解以及代码案例。


2.1 构造函数


字符缓冲流有两个构造函数:BufferedReader(Reader in)BufferedWriter(Writer out)。这两个构造函数都会使用默认的缓冲区大小,也可以通过使用BufferedReader(Reader in, int size)BufferedWriter(Writer out, int size),在创建缓冲流时指定缓冲区大小。

BufferedReader bin = new BufferedReader(new FileReader("file.txt"));
BufferedWriter bout = new BufferedWriter(new FileWriter("file.txt"));

2.2 读取数据


使用字符缓冲流读取数据时,可以使用read()函数或read(char[] cbuf, int off, int len)函数,其中read()函数每次只读取一个字符,而read(char[] cbuf, int off, int len)函数可以一次读取多个字符。

BufferedReader bin = new BufferedReader(new FileReader("file.txt"));
char[] chars = new char[1024];
int len = -1;
while ((len = bin.read(chars)) != -1) {
System.out.println(new String(chars, 0, len));
}

2.3 写入数据


使用字符缓冲流写入数据时,可以使用write()函数或write(char[] cbuf, int off, int len)函数,其中write()函数每次只写入一个字符,而write(char[] cbuf, int off, int len)函数可以一次写入多个字符。

BufferedWriter bout = new BufferedWriter(new FileWriter("file.txt"));
String str = "Hello, world!";
bout.write(str.toCharArray());
bout.flush();

三、序列化流


序列化流是Java IO包中的一个重要类,可以将Java对象转换为字节流进行存储或网络传输。下面我们来详细了解一下序列化流的函数用法、参数讲解以及代码案例。


3.1 序列化对象


使用序列化流序列化对象时,需要使用ObjectOutputStream类的writeObject()函数。

class Person implements Serializable {
private String name;
private int age;
// getter and setter
}
Person person = new Person();
ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream("person.txt"));
oout.writeObject(person);

3.2 反序列化对象


使用序列化流反序列化对象时,需要使用ObjectInputStream类的readObject()函数。

ObjectInputStream oin = new ObjectInputStream(new FileInputStream("person.txt"));
Person person = (Person) oin.readObject();


到此为止,我们已经学习完Java中的IO操作:字节缓冲流、字符缓冲流、序列化流。相信你已经对Java IO操作有了更深入的了解。如果你还有疑问,可以在评论区留言,我会尽快回复你。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论