数据流
DataInputStream和DataOutputStream两个类创建的对象分别被称为数据输入流和数据输出流。这是 很有用的两个流,它们允许程序按与机器无关的风格读写Java数据。所以比较适合于网络上的数据传 输。这两个流也是过滤器流,常以其它流如InputStream或OutputStream作为它们的输入或输出
DataInputStram和DataOutputStream分别继承自InputStream和OuputStream,属于过滤流,需要分 别套接在InputStream和OutputStream类型的节点流上
只有字节流,没有对应的字符流
DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据的方法 DataInputSteram和DataOutputStream构造方法为
DataInputStream(InputStream)
DataOutputStream(OutputStream)
打印流
PrintStream和PrintWriter都属于输出流,分别针对字节和字符
PrintWriter和PrintStream都提供了重载的print和println方法用于输出多种类型数据 print(Object):void
输出引用类型,实际上是调用对象的toString方法转换为String进行输出
println表示输出后自动换行
PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息 PrintWriter和PrintStream有自动的flush功能 textOut.flushBuffer();
PrintWriter(Writer) PrintWriter(Writer out, boolean autoFlush)自动刷新----println
对象流
使用DataInputStream或者DataOutputStream可以读写对象数据,但是操作比较繁琐
SUN提供了ObjectInputStream/ObjectOutputStream可以直接将Object写入或读出
这里实际上还有针对8种简单类型及其包装类的操作方法,以及针对String类型的操作方法 readObject():Object
writeObject(Object):void
读写一个对象的前提是这个类型的对象是可以被序列化的;
NotSerializableException
对象序列化【简单来说就是将对象可以直接转换为二进制数据流】/对象的反序列化【可以将二进制数据 流转换为对象】,这一般依靠JVM实现,编程中只做声明对象序列化的目标是将对象保存到磁盘中,或 允许在网络中直接传输对象。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从 而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点,其他程序一旦获取到这种二进制流,都可以将这种二进制流恢复成原来的Java对象
1、如何声明对象所属于的类可以进行序列化和反序列化Serializable/Externalizable接口
其中的接口没有任何定义,仅仅只起到了说明的作用,这种接口叫做标志接口或者旗标接口
2、可以通过ObjectInputStream【readObject():Object】和 ObjectOutputStream【writeObject(Object):void】提供的方法直接操作对象
3、输出对象
4、读取对象