|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。数据|数据范例 Java中除二进制文件和利用文本文件外另有基于Data的数据操纵,这里的Data指的是Java的基础数据范例和String。基础数据范例包含byte、int、char、long、float、double、boolean和short。
说到Java的基础数据范例必需谈到的两个类是DataInputStream和DataOutputStream。它们供应了对Java基础数据范例的操纵,可是这些办法现实上是在两个主要的接口中界说的DataInput和DataOutput,它们的功效就是把二进制的字撙节转换成Java的基础数据范例,同时还供应了从数据中利用UTF-8编码构建String的功效。有一个主要的类RandomAccessFile完成了DataInput和DataOutput两个接口使得他可以对文件同时举行写和读的操纵。
在DataInputStream和DataOutputStream两个类中的办法都很复杂,基础布局为readXXXX()和writeXXXX()个中XXXX代表基础数据范例大概String。在这里未几报告,不外值得一提的是我们有需要读读java中unicode的编码划定规矩,在APIdoc中有对照具体的先容。一般我们的对象有良多都是由java的基础数据范例组成的,好比一团体的信息包含姓名,电子信箱,德律风号码和性别等。实在我们能够用DataInputStream中的办法和DataOutputStream中的办法依照必定的序列把数据写进流中再依照不异的序列把他们读掏出来,这就是我们本人完成的序列化,这能够用在数据传输中,好比在J2ME联网程序中利用序列化机制传输数据。上面我们看看怎样本人完成序列化,起首我们要有两个机关函数个中一个参数为空。
publicAccount()
{
}
publicAccount(StringuserName,Stringemail,intage,booleangender)
{
this.userName=userName;
this.email=email;
this.age=age;
this.gender=gender;
}
当我们举行序列化的时分也很复杂,我们只是往DataOutputStream中依照按次写进对象的成员变量。比方:
publicvoidserialize(DataOutputStreamdos)throwsIOException
{
dos.writeUTF(userName);
dos.writeUTF(email);
dos.writeInt(age);
dos.writeBoolean(gender);
}
当我们举行反序列化的时分则依照不异的按次从DataInputStream内里读取数据并赋值给成员变量。比方:
publicstaticAccountdeserialize(DataInputStreamdis)throwsIOException
{
Accountaccount=newAccount();
account.userName=dis.readUTF();
account.email=dis.readUTF();
account.age=dis.readInt();
account.gender=dis.readBoolean();
returnaccount;
}
为了便于调试我们还供应一个toString()的办法打印出对象的实践信息。这是个好的习气。
publicStringtoString()
{
return"UserName="+userName+"Email="+email+"age="+age+"gender="+(gender?"male":"female");
}
为了测试序列化我们编写上面的程序举行测试,代码对照复杂。
packagecom.j2medev.mingjava;
importjava.io.*;
publicclassTestDataIO
{
publicstaticvoidmain(String[]args)throwsIOException
{
Accountaccount=newAccount("mingjava","eric.zhan@263.net",25,true);
System.out.println("beforeserialization.........");
System.out.println(account.toString());
ByteArrayOutputStreambaos=newByteArrayOutputStream();
DataOutputStreamdos=newDataOutputStream(baos);
account.serialize(dos);
DataInputStreamdis=newDataInputStream(newByteArrayInputStream(baos.toByteArray()));
AccountsAccount=Account.deserialize(dis);
System.out.println("afterserialization..........");
System.out.println(sAccount.toString());
dos.close();
dis.close();
}
}
packagecom.j2medev.mingjava;
importjava.io.*;
publicclassAccount
{
privateStringuserName="";
privateStringemail="";
privateintage=0;
privatebooleangender=false;
publicAccount()
{}
publicAccount(StringuserName,Stringemail,intage,booleangender)
{
this.userName=userName;
this.email=email;
this.age=age;
this.gender=gender;
}
publicvoidserialize(DataOutputStreamdos)throwsIOException
{
dos.writeUTF(userName);
dos.writeUTF(email);
dos.writeInt(age);
dos.writeBoolean(gender);
}
publicstaticAccountdeserialize(DataInputStreamdis)throwsIOException
{
Accountaccount=newAccount();
account.userName=dis.readUTF();
account.email=dis.readUTF();
account.age=dis.readInt();
account.gender=dis.readBoolean();
returnaccount;
}
publicStringtoString()
{
return"UserName="+userName+"Email="+email+"age="+age+"gender="+(gender?"male":"female");
}
}
编译运转程序在把持台输入:
beforeserialization.........
UserName=mingjavaEmail=eric.zhan@263.netage=25gender=male
afterserialization..........
UserName=mingjavaEmail=eric.zhan@263.netage=25gender=male
序列化乐成!
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。 |
|