流的本质是数据传输,根据处理数据类型的不同,流可以分为两大类:字节流和字符流。 字节流以字节(8 bit)为单位,包括两个抽象类:InputStream 和 OutputStream 字符流以字符(16 bit)为单位,根据码表映射字符,一次可以读多个字节,它包含两个抽象类:Reader和Writer。 其主要区别是:字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。 流的主要作用是为了改善程序性能并且使用方便。
1.File(String pathname) 根据指定的路径创建一个File对象 2.createNewFile() 若目录或文件存在,则返回false;否则创建文件或文件夹 3.delete() 删除文件或文件夹 4.isFile() 判断这个对象是不是文件 5.isDirectory() 判断这个对象是否表示文件夹 6.listFiles() 若对象代表目录,则返回所有文件的File对象 7.mkdir() 根据当前指定的路径创建目录 8.exists() 判断对象对应的文件是否存在
它将流转换为对象。在序列化和反序列化过程中,serialVersionUID起着非常重要的作用,每个类都有一个特定的serialVersionUID来判定类的兼容性。如果待序列化的对象与目标对象的serialVersionUID不同,那么反序列化就会抛出InvalidClassException异常。一个好的编程习惯,最好在被序列化的类中显式地声明serialVersionUID(该字段定义为static final)。自定义有以下优点: 1.提高程序运行效率 2.提高程序不同平台的兼容性 3.增强各个版本兼容性
4.序列化(Serialization) 在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制序列的形式在网络上传送。序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作是所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或者保存到文件、数据库等系统里,并在需要时把流读取出来重新构造一个相同的类。 所有要实现序列化的类都必须实现呢Serializable接口,Serializable接口位于java.lang包中,它里面没有包含任何方法。使用一个输出流(例如FileOutputStream)来构造一个ObjectOutputStream(对象流)对象。紧接着,使用该对象write() Object(Object obj)就可以将obj对象写出(保存其状态),要恢复时可以使用其对应的输入流。 序列化的特点: 1.如果一个类能被序列化,那么它的子类也能够被序列化。 2.由于static和transient 代表对象的临时数据,因此被声明为这两种类型的数据成员是不能够被序列化的。
序列化的使用会影响系统的性能,如果不是必须要使用序列化,应尽量不使用序列化。以下情况时需要使用序列化: 1.通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。 2.序列化能实现深层复制,即可以复制引用的对象。
6.I/O是用来做什么的?是用来永久保存数据的,是数据持久化的一中机制;
7.
InputStream(字节输入流)和Reader(字符输入流)
OutputStream(字节输出流)和writer(字符输出流)
8.序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方
法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出
流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使
用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对
象写出(即保存其状态),要恢复的话则用输入流。
9.
请选择正确的答案
A .system.out是一个printStream
B .system.out是一个outputstream
C.system.out是一个FilterOutputStream
D.system.out不是一个printStream
E.system.out在异常时,会抛出IOException
结果是:ABCE
http://blog.csdn.net/shikanong/article/details/50994429
system.out 是一个printStream,printStream是FileterOutStream的一个子类,FileOutStream是OutputStream的一个子类,Printsream对象并没有抛出ioexception
10. 什么被序列化 属性(包括基本数据类型、数组、对其它对象的引用) 类名 什么不被序列化 static 的属性 方法 加了 transient 修饰符的属性 要想序列化对象,必须先创建一个outputstream,然后把它嵌进 objectoutputstream。这时就能用writeobject()方法把对象写 入outputstream,。读的时候需要把inputstream嵌到objectinputstream 中,然后在调用readobject()方法。 Serializable接口是一个里面什么都没有的接口? 它的源代码是public interface Serializable{},即什么都没有。 如果一个接口里面什么内容都没有,那么这个接口是一个标识接口,比如,一个学生遇到一个问题,排错排了几天也没解决,此时,她举手了(示意我去帮他解决),然后我过去,帮他解决了,那么这个举手其实就是一个标识,自己不能解决的问题标示我去帮他解决,在Java中的这个Serializable接口是给JVM看的,告诉JVM,我不做这个类的序列化了,你(JVM)给我序列化, 序列化就是变成二进制流,比如云计算、Hadoop,特别是Hadoop完全就是分布式环境,那么就要涉及到对象要在网络中传输,里面的全是二进制流,当然你来做这个序列化操作也可以,但是这个类里面可能还有一个类,如果你把外面的类对象Person变成二进制,那么里面也要序列化(这要用到深度遍历,很麻烦),干脆告诉JVM,让他来帮你做。