Java 继续获取StreamCorruptedException,即使代码很好 FileInputStream fis=新的FileInputStream(数据文件); ObjectInputStream getItem=新ObjectInputStream(fis); 播放器[0]=(高分)getItem.readObject(); for(int i=0;i
如上所示,player[0]行给出了错误。即使我在循环中有这个,它也会给我同样的错误。请记住,数据文件上只有一行数据,这就是为什么我只想让控制台读取第一行数据 编辑:这是代码的编写部分,正如大家所希望的:Java 继续获取StreamCorruptedException,即使代码很好 FileInputStream fis=新的FileInputStream(数据文件); ObjectInputStream getItem=新ObjectInputStream(fis); 播放器[0]=(高分)getItem.readObject(); for(int i=0;i,java,eclipse,Java,Eclipse,如上所示,player[0]行给出了错误。即使我在循环中有这个,它也会给我同样的错误。请记住,数据文件上只有一行数据,这就是为什么我只想让控制台读取第一行数据 编辑:这是代码的编写部分,正如大家所希望的: FileInputStream fis = new FileInputStream(dataFile); ObjectInputStream getItem = new ObjectInputStream(fis); player[0] = (HighScore) getIte
FileInputStream fis = new FileInputStream(dataFile);
ObjectInputStream getItem = new ObjectInputStream(fis);
player[0] = (HighScore) getItem.readObject();
for(int i = 0; i< player.length; i++)
{
highscoreinfo.setText("<html>" + highscoreinfo.getText() + "<br>" + player[i]);
System.out.println(player[i]);
}
getItem.close();
FileOutputStream fos=新的FileOutputStream(数据文件,true);
ObjectOutputStream saveItem=新的ObjectOutputStream(fos);
player[intplayernum]=新的高分(用户名、TimePlayerNum、totalwords、timecount.getText());
saveItem.writeObject(播放器[intplayernum].toString());
对于(int i=0;iI假设问题在于代码的写入部分。您是如何将数据写入文件的?您是否在HighScore
类的读取和写入之间更改了任何内容?每次按下按钮时,都会写入已存在的数据文件。文件本身在一行中显示我的所有数据,即fine、 但它似乎无法读取,而(很可能)这不是您当前的问题-您正在编写一个toString()
(这是一个字符串,可能是为人类可读性定制的)并尝试读取Highscore
。如果你做得那么远,我猜这会引发ClassCastException。你每次写入时都会附加到文件,但只读取第一个条目,你是否尝试删除文件以重新开始,而不是重复尝试读取写入文件的第一个内容?
FileOutputStream fos = new FileOutputStream(dataFile, true);
ObjectOutputStream saveItem = new ObjectOutputStream(fos);
player[intplayernum] = new HighScore(userName, timePlayed, totalwords, timecount.getText());
saveItem.writeObject(player[intplayernum].toString());
for(int i = 0; i<= intplayernum; i++)
{
System.out.println(player[i]);
}
System.out.println("Player score written to file.");
saveItem.close();
GameFrame.setVisible(false);
GameFrame.dispose();
askNameApp();
intplayernum++;