【发布时间】:2016-07-07 11:53:27
【问题描述】:
我已经创建了一个可外部化的对象 - 用户。除非我退出应用程序并重新打开它,否则它在从存储中写入和读取它时工作正常。那么就会出现这个错误:
java.io.EOFException 在 java.io.DataInputStream.readFully(DataInputStream.java:197) 在 java.io.DataInputStream.readUTF(DataInputStream.java:609) 在 java.io.DataInputStream.readUTF(DataInputStream.java:564) 在 com.codename1.io.Util.readUTF(Util.java:962)
我在stateMachine中注册了如下类:
@Override
protected void initVars(Resources res) {
Util.register("User", User.class);
}
这是课程:
package userclasses;
import com.codename1.io.Externalizable;
import com.codename1.io.Util;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Date;
/**
*
*
*/
public class User implements Externalizable {
private static final int VERSION = 1;
public int userID;
public String username;
public String password;
public String firstname;
public String surname;
public String email;
public Date registerDate;
public boolean paidUser;
public double runStep;
public double walkStep;
public User(){
}
@Override
public int getVersion() {
return VERSION;
}
@Override
public void externalize(DataOutputStream out) throws IOException {
out.write(userID);
Util.writeUTF(username, out);
Util.writeUTF(password, out);
Util.writeUTF(firstname, out);
Util.writeUTF(surname, out);
Util.writeUTF(email, out);
out.writeLong(registerDate.getTime());
out.writeBoolean(paidUser);
out.writeDouble(runStep);
out.writeDouble(walkStep);
}
@Override
public void internalize(int version, DataInputStream in) throws IOException {
userID = in.readInt();
username = Util.readUTF(in);
password = Util.readUTF(in);
firstname = Util.readUTF(in);
surname = Util.readUTF(in);
email = Util.readUTF(in);
registerDate = new Date(in.readLong());
paidUser = in.readBoolean();
runStep = in.readDouble();
walkStep = in.readDouble();
}
@Override
public String getObjectId() {
return "User";
}
}
【问题讨论】:
标签: codenameone