有3个接口对于流类相当重要.其中两个接口是Closeable和Flushable,它们是在java.io包中定义的,并且是由JDK5添加的.第3个接口是AutoColseable,它是由JDK7添加的新接口,被打包到java.lang包中. AutoCloseable接口对JDK7新添加的带资源的try语句提供了支持,这种try语句可以自动执行资源关闭过程.只有实现了AutoCloseable接口的类的对象才可以由带资源的try语句进行管理.AutoCloseable接口只定义了close()方…
解决方案: 在类中显式指定 private static final long serialVersionUID = 42L; 类实现序列化接口, 进行序列化反序列化的时候, 抛出 java.io.InvalidClassException 异常 java.io.InvalidClassException: com.xx.Xxx; local class incompatible: stream classdesc serialVersionUID = -783991920331, local…
流式IO 流(Stream)是字节的源或目的.         两种基本的流是:输入流(Input Stream)和输出流(Output Stream).可从中读出一系列字节的对象称为输入流.而能向其中写入一系列字节的对象称为输出流. 流的分类 节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域. 过滤流:使用节点流作为输入或输出.过滤流是使用一个已经存在的输入流或输出流连接创建的. InputStream 三个基本的读方法       abstract int read() :读取一个字…
Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在运行时创建了一个File对象,而不是在文件系统中创建了一个文件.File类可以表示文件系统中存在的目录或文件,也可以表示尚不存在的 #File.separator是一个跨平台的分隔符 (Win用"\",同时"\"又做反义字符,所以"\\"才表示分隔符…
package java.io; import java.io.IOException; /** * 关闭数据资源*/public interface Closeable extends AutoCloseable { /** * 关闭流,以及释放和它有关的资源. * 如果这个流已经关闭,调用这个方法将不起作用.猜测不会报错 */ public void close() throws IOException;} java.io.Closeable 接口 只有一个方法,close().用来关闭流,…
说到java.io.Closeable接口就避不开java.lang.AutoCloseable接口,因为在java版本7.0时引入了java.lang.AutoCloseable接口,同时java.io.Closeable接口便继承自java.lang.AutoCloseable接口了. java.io.Closeable 先说一下Closeable接口,这个接口从java 5.0版本开始引入,其中中仅声明了一个方法close,用于关闭一个资源.一直一来我都很困惑,就算不实现这个接口,我给我的…
package java.io; import java.io.IOException; /** * 在什么情况下用呢? 缓冲输出到一个流中的情况下,这个流要刷新. */ public interface Flushable { void flush() throws IOException;} java.io.Flushable 接口只有一个方法.输出流用.…
Java IO 四大附加接口.try-with-resource @author ixenos 四大附加接口 Closeable.Flushable.Readable.Appendable Closeable: void close() throws IOException 关闭此流并释放与此流关联的所有系统资源 java.io.closeable扩展了java.lang.AutoCloseable,因此,对任何Closeable进行操作时,都可以使用try-with-resources语句 t…
什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是能将Java对象转化成文本文件的一种方式. 什么情况下需要序列化 ?a)当你想把的内存中的对象保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候: 如何实现序列化 ? 将需要序列化的类实现Serializable接口就可以了. public…
package java.io; public interface Serializable { } (1)实现Serializable接口的类,将会被提示提供一个 serialVersionUID 注意点一.序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性. 有两种生成方式:              ①一个是默认的1L,比如:private static final long serialVersionUID = 1L;              ②一个是根据类名.接口…