已采纳回答 / 慕粉3434120
在DataOutputStreamDemo这个类里,查看 dos.writeUTF("中国");是否是writeUTF格式的;package imooc_File_IO_Demo;import java.io.DataOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class DataOutputStreamDemo { ...
2016-07-13
已采纳回答 / mutou3443
b是你本次读到的字节数,其中b<= buf.length。读满的时候b= buf.length,读到最后一次的时候很可能b< buf.length,这个时候buf里面一共有b(<buf.length)个字节,你fos.write(buf, 0, buf.length)就数组越界了。
2016-07-11
已采纳回答 / tlojy
stuage是通过s.writeInt(stuage)写入的,这里只有一个transient int型,读的时候自然没问题,如果有两个transient int型是按照写入的顺序读取的。假设stusex=1,stuage=20,比如写入顺序是:s.writeInt(stusex); s.writeInt(stuage);第一次执行s.readInt()会读取1,再次执行s.readInt()会读取20,如果还想再执行s.readInt()会报java.io.EOFException异常。
2016-07-07
已采纳回答 / 要做Java大师
public static String toHexString(int i)这个是本方法的声明,一个一个解答问题,它的参数是整型的。在java中int类型就是四个字节的,所以如果实参是四个字节是不会发生类型转换的啊,其实有点没明白为什么问这个问题,是不是因为视频中出现的 .toHexString(char b&0xff)这个句子,会觉得里面是16位的数据?其实做这个主要是为了防止char转成int 类型由于计算机补码存储方式的原因,要专门设置最高位符号位。由于char类型是16位二进制的(两字节...
2016-07-06
已采纳回答 / 大咪
你这个demo\\out.date是你自己创建的,用老师之前将过有一个Rafdemo的例子教你用代码如何创建目录和目录下的子文件,你这个必然是因为在同级目录中没有这个文件,所以编译器找不到位置,才会报错。同级目录就是你项目里存的那个目录,右击包的属性可以查看你的工作存储空间在哪里。
2016-07-06
已采纳回答 / 上进的程序员
我记得老师好像说过,如果文件大小超出字节数组的大小,那么字节数组会被重复使用。举个例子,如果文件大小是1m,数组大小是100k,那么数组会被使用十次,每一次都会被刷新。字节数组写文件也是一样。
2016-07-03
已采纳回答 / 怒放的生命012
&是计算机实行的与操作,0xff是十六进制的表现形式 和二进制 1111 1111 是一样的, 代表一个字节;&操作是两个对相应相等的 才相等 比如 1000 0101 & 0001 0001 ---> 结果就是 0000 0001题上用 & 0xff 就是为了截取 低8位 作为一个字节 存入字节数组中去
2016-07-03
已采纳回答 / qq_我有我的范儿_0
我说一下我的理解吧:说之前首先要说一下概念,序列化就是将对象转换为字节序列,通俗点就是讲创建出来的对象状态保存起来(构造函数初始化之后的)父类如果没有实现序列接口,而子类实现序列接口,那么父类对象就不会被序列化,也就不会被保存,而子类却可以被序列化,即保存Java中构造一个对象,首先得先构造父类对象,才会构造子类对象,所以在反序列化子类时,就会调用父类构造方法来作为默认的父类对象,而子类因为已经被序列化了(已经调用过子类构造方法的状态),所以就不会再调用子类自己的构造方法
2016-07-02
已采纳回答 / bigfire
第一个问题:代码第30行,osw.write(buffer,0,buffer.length);这句话会把整个buffer数组里面的内容全部写到file1.txt中去。buffer数组的内容有两部分构成,一部分是在代码26行,通过输入流isr.read(buffer,0,buffe...
2016-07-01