C13(IO)

来源:互联网 发布:电脑如何卸载软件? 编辑:程序博客网 时间:2024/05/22 00:38

流的概念
一个流是字节的源或者目的。次序是有意义的。要从输入流读取字节,或者要往输出流写字节,必须有一个与这个流相关联的字符源。java的io包中,有一些流是结点流,即它们可以从一个特定的地方读写,例如磁盘或者一块内存。其他流称作过滤器。一个过滤器输入流是用一个到已存在的输入流的连接创建的,在此以后,当你试图从过滤输入流对象读时,当它向你提供来自另一个输入流对象的字符(比如BufferedInputStream)。

描述和使用java.io包的流式思想
Java的io操作采用是流式操作,分别以输入输出流作为基准,来进行IO操作。在InputStream和与其对应的OutputStream类中,派生出像FileInputStream,ByteArrayInputStream等子类,它们各管一部分,比如管道通信用于线程传递信息,等等。其中常用的是FileInputStream和ObjectInputStream和与之对应的OutputStream,在流分类的基础上,又分为结点流和过滤器。由于Java使用的是Unicode来表示字符串和字符,所以又有了InputStreamReader与OutputStreamWriter与之进行转换。有时候需要进行频繁的读写操作,需要使用到Buffered的缓冲技术,由于Java的IO是一种管道流的技术(个人称法),所以,有时候需要去写进行管道上的捕获,原则上是高一层的捕获低一层的.


区别流与读者和作者,并进行合适的选择
就好像字面意思一样,读者就是程序读取数据,那么它应该是InputStreamReader,作者就是程序写入数据像外传播,那么就是OutputStreamWriter,所谓的读者与作者是建立在程序的基础上的。

使用Serialization接口来保持对象的状态
程序中存在很多很多的对象,在我们长期不使用对象的时候,Java的垃圾回收机制会将它们回收,有时候我们需要长期的保存这些对象,或者我们需要在网络间传递这些对象,如何传递?Java中实现了序列化机制,只需要实现Serializable接口,就可以保存对象,Serializable接口内没有任何方法,它就好像一个旗帜性的东西,告诉编译器,只要你实现它,你的对象就具备了序列化的机制,需要注意的是,序列化的存储,只保留数据,不保留方法与构造函数,如果数据中包含对象,那么它会保存该对象的方法,依此类推,但是要注意的是,如果对象中存在不能被序列化的对象,就不能序列化该对象,如果想序列化该对象,只要在没有实现序列化的类型声明前加上transient就可以了。 

原创粉丝点击