分类:
按照流的流向不同:分为输入流(InputStream)和输出流(OutputStream);
按流中的数据格式不同:分为字节流和字符流,字节流继承于(InputStream)和(OutputStream),字符流继承于(InputStreamReader)和(OutputStreamWriter);
字节流与字符流的相互转换:
字节流转换为字符流:字节输入流转换为字符输入流时,使用InputStreamReader,字节输出流转换为字符输出流时,使用OutputStreamWriter;反之,将字符流转换为字节流就是使用InputStream和OutputStream。
字节流与字符流的区别:
字节流在读取数据时,是按字节读取,读到一个字节就返回一个字节,而字符流在读取数据时使用了字节流读取一个或者多个字节,然后在编码表中查询字符,将查到的字符返回。
Java中的序列化:
如何实现:
只需要将要被序列化的类实现Serializable接口即可。
在看过Serializable接口源码,我们可以知道,这个接口中没有实际需要实现的变量以及方法,因此Serializable接口其实就是在JVM中起到一个标记的作用,告诉系统这个类是需要被序列化的。
为什么要序列化:
经序列化过的类,它的数据以及方法不仅可以长久保持,最关键的是它还可以在网络中传输。
序列化中的注意事项:
在实现了Serializable接口后强烈建议要设置一个serialversionUID参数(也可以不设,但是你必须要到Serializable接口中找到其设置的serialversionUID的默认值,使其保持一致),这个参数在对象被序列化时没有什么关键作用,但是当我们需要把序列化后的数据再转换为对象时,这个serialversionUID参数就显得尤为重要了,serialversionUID参数在对象被序列化的时候就已经被写入到了序列化的数据中,当要反序列化时,系统首先会检查数据中的serialversionUID参数与原对象中的serialversionUID参数是否一致,如果一致反序列化可以继续,如果不一致会抛出异常。
Java中的I/O流相关知识点
最新推荐文章于 2024-07-24 11:16:49 发布