Java中基本数据类型与流的操作方法
在Java中,除了二进制文件和文本文件,还有基于数据的数据操作,这里的数据是指Java的基本数据类型和字符串。基本数据类型包括字节、整数、字符、长整型、浮点型、双精度型、布尔型和短整型。
说到Java的基本数据类型,必须要讲的两个类是DataInputStream和DataOutputStream。它们提供对Java基本数据类型的操作,但这些方法实际上是在两个重要接口中定义的DataInput和DataOutput。它们的功能是将二进制字节流转换成Java基本数据类型,它们还提供使用UTF-8编码从数据构建字符串的功能。一个重要的类RandomAccessFile实现了两个接口DataInput和DataOutput,这使它能够同时读写文件。
DataInputStream和DataOutputStream中的方法非常简单。基本结构是readXXXX()和writeXXXX(),其中XXXX表示基本数据类型或字符串。这里就不说了,但是值得一提的是,我们有必要看一下java中unicode的编码规则,API doc中有详细介绍。通常,我们的许多对象都是由java基本数据类型组成的,例如一个人的信息,包括姓名、电子邮件、电话号码和性别。实际上,我们可以使用DataInputStream和DataOutputStream中的方法,按照一定的顺序将数据写入流中,然后按照相同的顺序将它们读出。这是我们自己的序列化,可以用在数据传输中,比如用J2ME联网程序中的序列化机制来传输数据。我们来看看如何自己实现序列化。首先,我们有两个构造函数,其中一个是空。
公共帐户()
{
}
公共帐户(字符串用户名,字符串电子邮件,int年龄,布尔性别)
{
this . userName = userName;
this . email = email;
this . age = age;
this . gender = gender;
}
我们连载的时候,也很简单。我们只是将对象的成员变量按顺序写入DataOutputStream。例如:
public void serialize(data output stream dos)抛出io exception
{
dos . write utf(userName);
dos . write utf(email);
dos . write int(age);
dos.writeBoolean(性别);
}
当我们反序列化时,我们以相同的顺序从DataInputStream读取数据,并将值赋给成员变量。例如:
公共静态帐户反序列化(DataInputStream dis)引发io exception
{
Account Account = new Account();
account . username = dis . read utf();
account . email = dis . read utf();
account . age = dis . readint();
account . gender = dis . read boolean();
返回账户;
}
为了便于调试,我们还提供了一个toString()方法来打印出对象的实际信息。这是一个好习惯。
public String toString()
{
return " UserName = "+UserName+" Email = "+Email+" age = "+age+" gender = "+(性别?“男”:“女”);
}
0条评论