下载
java.io
2
java.io
下载
下载
java.io
3
描述
java.io包包括了三个主要的类和接口组:建立数据流的类用于序列化的类和接口处理文件
系统的类和接口数据流一个数据流可以是一个用于从一个数据源中读取数值的输入流,数据源如:HTTP服务器或者
Java串;也可以是一个用于写入一个数据仓库的输出流,数据仓库如:一个文件或一个字节数组.数据可以是字节或者是字符.java.io包包含了分别处理字节流和字符流的不同的类.它
4
java.io
下载
还包含了用于在字节流和字符流之间转换的类.一个数据容器(例如一个文件),在典型的情况下,它会提供一个方法用于返回一个用于读取其内容的输入流,或一个向其内部存储数值的输出流.这些流可以根据在其中流过的内容组合成一个数据流链,并且它们可以被转换成任何一种流.例如,在获得一个输入流后,把输入的字节流转换成更高层次的Java类型,如字符串和整数(如图1所示),之后将数据输入流添加到文件中.
文件FileInputSteamDataInputStreamread()
Write()
DataOutputStream
FileOutputStream
文件
图1复合IO流
序列化对一个对象的序列化就意味着把其状态转化成一个字节流,这样该字节流可以被存储为这个对象的一个拷贝.并不是所有的对象都可以序列化的.一个对象如果能够序列化就将其称为可序列化的.如果一个Java对象所属的类或它的任意超类实现了Serializable接口或其子接口是Externalizable的,那么这个对象是可序列化的.反序列化是将一个已序列化对象的结构转化为其原有形式的过程.其数值为Java基本类型(如数组,字符串)的对象都是可序列化的.图2所示为对象的序列化及反序列化的过程.基本类型可以通过DataInputStream/DataOutputStream类中的方法来实现序列化及反序列化.文件
对象ObjectInputStreamreadObject()序列化数据ObjectOutputStream对象WriteObject()
图2序列化与反序列化
java.io包还包含了对文件进行操作的类,其操作如:以独立于平台的方式创建和删除文件.文件中的数据可以被看成字节或字符.
版本1.2中所作的修改
数据流对数据流类的修改主要包括了对如close(),read(),ready()和write()方法的扩充,以便使这些方法更加符合它们在类中语义.PrintStream的构造函数已不再被禁止.
下载
PrintWriter的内部实现已经被修改,以便使其更加容易子类化.序列化
java.io
5
ObjectInputStream和ObjectOutputStream使子类化变得更加灵活.通过使用新的抽象类ObjectInputStream.GetField和ObjectOutputStream.PutField为取得和设置可序列化的域提供一个更加统一的方式.对象的序列化使用版本Per
mission类来控制定制的序列化过程.文件类File(文件)类被扩展用于支持对临时文件及锁式文件的创建.其中还增加了用于删除文件,改变文件修改时间和只读标记的新方法.File,FileOutputStream和RandomAccessFile构造函数已经被修改,当不存在与所提供字符串标识名相同的文件时,它们会不断地抛出FileNotFoundException而不是IOException.RandomAccessFile添加了一个新的方法用于设置文件的长度,这样可以使文件易于删减和扩充.所有对文件的访问都通过新的FilePermission类来实现,在访问过程中使用版本1.2的安全模式.1.2的安全模式,以及用新的Serializable
类与接口概述
超类下面的抽象类定义了一个流所必须实现的最小操作集.InputStream和OutputStream类于用于字节流,而Reader和Writer用于字符流.InputStreamOutputStreamReaderWriter所所有字节输入流的超类,提供从一个字节流中读取数据的基本输入方法.所所有字节输出流的超类,提供向一个字节流中写入数据的基本输出方法.所所有字符输入流的超类,提供从一个字符流中读取字符的基本输入方法.所所有字符输出流的超类,提供向一个字符流中写入字符的基本输出方法.字节流字符流转换器下面的类可以让
程序把字节流转换成字符流.InputStreamReaderOutputStreamWriter过滤流当数据通过过滤流时,过滤流执行一些"处理"或"过滤".一个过滤输出流在数据写到从一个字节流之中读取字节,然后把它们转换成字符.把字符转换成一个字节编码,然后把它们写进一个字节流.