博客
关于我
JavaSE基础系列之IO流
阅读量:358 次
发布时间:2019-03-04

本文共 1269 字,大约阅读时间需要 4 分钟。

一. IO流分类

按照读写数据的基本单位不同,流可以分为字节流和字符流。

  • 字节流:以字节为单位读写数据,适用于处理任意类型的文件。
  • 字符流:以字符(2字节)为单位读写数据,主要用于处理文本文件。

从读写方向的角度看,流分为输入流和输出流。

  • 输入流:从文件中读取数据输入程序。
  • 输出流:将程序中的数据输出到文件中。

根据流的角色不同,流可以分为节点流和处理流。

  • 节点流:直接与输入输出源对接的流。
  • 处理流:建立在节点流基础上的流,通常用于更复杂的数据处理。

以下是不同类型流的对应关系:

分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象基类 InputStream OutputStream Reader Writer
访问文件 FileInputStream FileOutputStream FileReader FileWriter
访问数组 ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
访问管道 PipedInputStream PipedOutputStream PipedReader PipedWriter
访问字符串 -- -- StringReader StringWriter
缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
转换流 -- -- InputStreamReader OutputStreamWriter
对象流 ObjectInputStream ObjectOutputStream -- --
Filter输入流 FilterInputStream FilterOutputStream FilterReader FilterWriter
打印流 -- PrintStream -- PrintWriter
推回输入流 PushbackInputStream -- PushbackReader --
特殊流 DataInputStream DataOutputStream -- --

二. 缓冲流的优缺点

优点:减少了写入次数,提高了数据传输效率。

缺点:带缓冲的流会导致接收端可能无法及时获取数据。

三. 序列化版本号作用

序列化机制通过检查serialVersionUID来验证版本一致性。当反序列化时,JVM会将传入的serialVersionUID与本地类的serialVersionUID进行比较,若不一致则抛出异常。

四. transient关键字

transient是Java关键字,用来表示属性不会被序列化。当对象被序列化时,transient属性的值不会被包含在序列化表示中。transient字段的生命周期仅存在于内存中,不会被写入存储设备。

帮助理解:为了保障数据安全,如操作账号和密码等敏感信息不希望被序列化,可以将这些属性加上transient关键字。

转载地址:http://qvdr.baihongyu.com/

你可能感兴趣的文章
NPOI初级教程
查看>>
NPOI利用多任务模式分批写入多个Excel
查看>>
NPOI在Excel中插入图片
查看>>
NPOI将某个程序段耗时插入Excel
查看>>
NPOI格式设置
查看>>
NPOI设置单元格格式
查看>>
Npp删除选中行的Macro录制方式
查看>>
NR,NF,FNR
查看>>
nrf24l01+arduino
查看>>
nrf开发笔记一开发软件
查看>>
nrm —— 快速切换 NPM 源 (附带测速功能)
查看>>
nrm报错 [ERR_INVALID_ARG_TYPE]
查看>>
NS3 IP首部校验和
查看>>
NSDateFormatter的替代方法
查看>>
NSError 的使用方法
查看>>
NSGA-Ⅲ源代码
查看>>
nsis 安装脚本示例(转)
查看>>
NSJSON的用法(oc系统自带的解析方法)
查看>>
nslookup 的基本知识与命令详解
查看>>
NSOperation基本操作
查看>>