1
私は外部化可能なオブジェクトUserを作成しました。それは、私がアプリを終了し、それを再び開く以外は、ストレージに書き込んだり、ストレージから読み込んだりするときにうまく動作します。このエラーが発生します。ストレージからファイルを読み取っているときのEOFException
java.io.EOFExceptionを java.io.DataInputStream.readFully(DataInputStream.java:197)で java.io.DataInputStream.readUTF(DataInputStream.java:609)で で com.codename1.io.Util.readUTF(Util.java:962)
でjava.io.DataInputStream.readUTF(DataInputStream.java:564)以下のように私はステートマシンでクラスを登録しています
@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";
}
}
ありがとうございます@シャイ – roblin
私の喜びです。参考にしてください。答えが正しいときは、答えの隣にあるチェックマークを使ってそれを受け入れる必要があります。アップヴォートも良い答えのために丁寧です。スタックオーバーフローでより多くの機能にアクセスし、サイトの操作性を向上させるのに役立つ回答を受け入れる場合、追加のポイントも得られることに注意してください。 –