JAVA-基础(缓冲流-转换流-序列化流)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA-基础(缓冲流-转换流-序列化流),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3044字,纯文字阅读大概需要5分钟。
内容图文
![JAVA-基础(缓冲流-转换流-序列化流)](/upload/InfoBanner/zyjiaocheng/801/50ae4dfed39e46a486db1c360b85a87c.jpg)
JAVA-基础(缓冲流-转换流-序列化流)
1.缓冲流?
缓冲流,也叫高效流,是对4个基本的FileXxx
流的增强,所以也是4个流
字节缓冲流:BufferedInputStream
,BufferedOutputStream
字符缓冲流:BufferedReader
,BufferedWriter
2.原理?
在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
复制一个300M的文件,普通io流可能速度在20分钟以上,缓冲流只需要几百毫秒。
3.构造方法?
public BufferedInputStream(InputStream in)
:创建一个 新的缓冲输入流。
public BufferedOutputStream(OutputStream out)
: 创建一个新的缓冲输出流。
public BufferedReader(Reader in)
:创建一个 新的缓冲输入流。
public BufferedWriter(Writer out)
: 创建一个新的缓冲输出流。
4.方法?
BufferedReader:public String readLine()
: 读一行文字。
BufferedWriter:public void newLine()
: 写一行行分隔符,由系统属性定义符号。
5.转换流?
按照某种规则,将字符存储到计算机中,称为编码 。
存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。
在IDEA中,使用FileReader
读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8
编码,所以没有任何问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。
6.InputStreamReader?
是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。
7.构造方法?
InputStreamReader(InputStream in)
: 创建一个使用默认字符集的字符流。
InputStreamReader(InputStream in, String charsetName)
: 创建一个指定字符集的字符流。
8.OutputStreamWriter?
转换流java.io.OutputStreamWriter
,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节.
9.构造方法?
OutputStreamWriter(OutputStream in)
: 创建一个使用默认字符集的字符流。
OutputStreamWriter(OutputStream in, String charsetName)
: 创建一个指定字符集的字符流。
10.序列化?
Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据
、对象的类型
和对象中存储的属性
等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据
、对象的类型
和对象中存储的数据
信息,都可以用来在内存中创建对象
11.ObjectOutputStream?
java.io.ObjectOutputStream
类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。
12.构造方法?
public ObjectOutputStream(OutputStream out)
: 创建一个指定OutputStream的ObjectOutputStream。
一个对象要想序列化,必须满足两个条件:
1该类必须实现java.io.Serializable
接口,Serializable
是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出NotSerializableException
。
2该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用transient
关键字修饰。
public final void writeObject (Object obj)
: 将指定的对象写出。
13.ObjectInputStream?
ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。
14.构造方法?
public ObjectInputStream(InputStream in)
: 创建一个指定InputStream的ObjectInputStream。
public final Object readObject ()
: 读取一个对象。
对于JVM可以反序列化对象,它必须是能够找到class文件的类。如果找不到该类的class文件,则抛出一个 ClassNotFoundException
异常。
内容总结
以上是互联网集市为您收集整理的JAVA-基础(缓冲流-转换流-序列化流)全部内容,希望文章能够帮你解决JAVA-基础(缓冲流-转换流-序列化流)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。