《thinking in java》学习笔记18

Java I/O系统
File类
  • 它既能代表一个特定文件,又能代表一个目录
  • 可以用File对象创建新目录或者文件,还可以查看文件特性,并且删除他们

输入和输出
  • 流这个抽象概念代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。流 屏蔽了实际I/O设备中处理数据的细节
  • InputStream或者Reader派生而来的类都有read()方法,用于读取单个字节或者字节数组;OutputStream或Writer派生而来的类都有write()方法,用于写单个字节或者字节数组
  • 《thinking <wbr>in <wbr>java》学习笔记18

添加属性和有用的接口
  • DataInputStream允许读取不同的基本类型数据以及String对象,搭配对应的DataOutputStream,我们可以通过数据六将基本类型的数据从一个地方迁移到另一个地方。几乎要对每次输入进行缓冲。
  • DataOutputStream可以将各种基本数据类型以及String对象格式化输出到流中
  • PrintStream最初的目的便是为了以可视化格式打印所有的基本数据类型以及String对象
  • BufferedOutputStream对数据流使用缓冲技术,因此当每次向流写入时,不必每次都进行实际的物理写入动作,所以进行输出时,我们更经常使用它
  • 《thinking <wbr>in <wbr>java》学习笔记18

Reader和Writer
  • 他们提供兼容Unicode与面向字符的I/O功能
  • 两个适配器InputStreamReader把InputStream转换成Reader;OutputStreamWriter把OutputStream转换成Writer
  • 《thinking <wbr>in <wbr>java》学习笔记18

自我独立的类
  • RandomAccessFile在1.4中大多数功能由nio取代

典型的使用方式
  • 缓冲输入文件:BufferedReader>>>FileReader>>>file
  • 从内存输入:StringReader
  • 格式化的内存输入:DataInputStream>>>ByteArrayInputStream
  • 基本文件输出:PrintWriter>>>BufferedWriter>>>FileWriter>>>file
  • 恢复和存储数据:如果我们一DataOutputStream写入数据,Java保证可以使用DataInputStream准确的读取数据,无论平台多么不同
  • 复杂数据结构的读取方式应该使用对象序列化和XML

标准I/O
  • 按照标准I/O模型,Java提供了System.in,System.out,System.err
  • System.in是一个没有被包装过的未经加工的InputStream,而其他两个被包装成了printStream
  • setIn(InputStream),setOut(PrintStream),setErr(PrintStream)用于重定向
  • 重定向操纵的是字节流,不是字符流

新I/O
  • 旧的I/O包已经使用nio重新实现过

压缩
  • 《thinking <wbr>in <wbr>java》学习笔记18
  • 压缩类的使用:直接将输出封装成压缩流即可

对象序列化
  • 方法:创建某些OutputStream对象>>>封装在一个ObjectStream对象内>>>调用writeObject即可序列化对象>>>将其发送给OutputStream
  • java的对象序列化似乎没有什么缺点,请尽量不要自己动手

XML
  • 对象序列化只是Java的解决方案,更具互动性的解决方案是将数据转换为XML格式,这可以被各种平台和语言使用

Preferences
  • 用于存储和读取用户的偏好以及程序配置项的设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值