-
对象的序列化与反序列化,在将文件在网络上传输时需要将文件转化成字节传输,也就是序列化(socket通信)查看全部
-
in.read(buf, 0, buf.length)这个方法不是一次性读完了嘛? 首先对于你的这个理解是错误的,因为这个方法正确的理解是把文件内容的字节读入到字节数组buf中,但是文件内容的字节有可能大于字节数组buf的长度,那么文件内容就一次读不完。 in.read(buf, 0, buf.length)这个方法可能为-1吗 再来说说这个方法的返回值,这个方法返回的是实际读取到字节数组中的字节的数量。官方api明确指出,如果已经达到文件的末尾,返回值为-1.查看全部
-
字符流的处理查看全部
-
字符流查看全部
-
File Data 与Buffered查看全部
-
1、java文件模型 在硬盘上的文件是byte byte byte存储的,是数据的集合 1、打开文件 有两种模式“rw”(读写) “r”(只读) RandomAccessFile raf = new RandomAccessFile(file,"rw"); 文件指针,打开文件时指针在开头pointer=0; 3、写方法 raf.write(int a) --->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 4、读方法 int b = raf.read() ------>读一个字节 5、文件读写完成以后一定要关闭(Oracle官方说明)查看全部
-
RandomAccessFile是java提供的对文件内容的访问,既可以读文件,也可以写文件。 RandomeAccessFile支持随机访问文件,可以访问文件的任意位置查看全部
-
数据类是为了处理基本数据类型时更方便而用的查看全部
-
序列化中父子类的构造函数的问题:<br> 1:一个类实现了序列化接口,那么其子类都可以进行序列化<br> 2:序列化的时候,使用子类创建对象的时候会递归调用父类的构造函数——JAVA是单继承的语言,要先有父再有子 3:反序列化的时候,对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被递归调用——直接父类和间接父类都是如此的,反之,如果父类实现了序列化的接口,那么子类继承它的属性和方法就可以直接反序列化,就不会调用父类的构造函数了。查看全部
-
一个类要序列化,就要实现Serializable接口,反过来说,不实现Serializable就不能序列化 当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。查看全部
-
JAVA I/O 输入输出流-20160421 RandomAccessFile基本操作 RandomAccessFile java提供的对文件内容的访问类,既可以读,也可以写。 RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上的文件时byte byte byte存储的,时数据的集合 (2)打开文件 有两种模式”rw”(读写)”r”(只读) RandomAccessFile raf = new RandomAccessFile(file,”rw”) 文件指针,打开文件时指针在开头pointer = 0; (3)写方法 raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b = raf.read()—>读一个字节 (5) .close() 文件读写完成以后一定要关闭(Oracle官方说明)查看全部
-
字节流查看全部
-
输入流基本方法查看全部
-
输入流基本方法查看全部
-
当我们序列化一个对象时,不想序列化这个对象中的某些属性时,我们可以将对应的不想被序列化的属性使用 transient这个关键字来修饰,这样——此属性就不会被JVM默认的序列化了,当然,当我们想对这个属性序列化的时候,也可以自己完成对此属性的序列化。 之所以有这样的功能存在,其原因在与: 1:我想自己序列化某个对象的属性——ArrayList这个类中就有这样的例子——思路是 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作 s.writeInt(stuage);//自己完成stuage的序列化 } private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException{ s.defaultReadObject();//把jvm能默认反序列化的元素进行反序列化操作 this.stuage = s.readInt();//自己完成stuage的反序列化操作 } 2:我不想序列化某个对象的属性——可能想节省网络流量,也可能不想传递某个对象的属性 3:这样做的目的,有时是为了为我们的代码提高效率,建议分析——ArrayList类中自己包装的序列化和反序列化的操作。将数组中有效的元素,序列化和反序列化,目的是为了能够提高效率。查看全部
举报
0/150
提交
取消