如何解决从文件加载ArrayList的问题?
完整代码在git上:项目github链接
当我从文件中加载数据时,我会把它拿回来-
我正在学习使用流,所以我正在将其写入文件。
程序结束后,我想在数组列表中写下用户到达的时间,并列出游戏完成的所有时间。
package sk.games.puzzle;
import java.io.*;
import java.util.*;
public class BestTimes implements Iterable<BestTimes.PlayerTime>, Serializable{
private static final String BESTTIME_DB = System.getProperty("user.home")
+ System.getProperty("file.separator")
+ "best_time_db.db";
private List<PlayerTime> playerTimes = new ArrayList<>();
public Iterator<PlayerTime> iterator() {
return playerTimes.iterator();
}
public void addTime(String name, int time){
playerTimes.add(new PlayerTime(name, time));
Collections.sort(playerTimes);
this.save();
}
public void load() {
FileInputStream fis = null;
try {
fis = new FileInputStream(BESTTIME_DB);
} catch (FileNotFoundException e) {
System.err.println("Fail db neexistuje");
} finally {
if (fis != null) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(fis);
if (ois != null) {
try {
playerTimes = (ArrayList<PlayerTime>) ois.readObject();
} catch (ClassNotFoundException e) {
System.err.println("Fail nebola najdena trieda");
}
} else {
}
assert ois != null;
ois.close();
} catch (IOException e) {
System.err.println("Fail nepodarilo sa otvoril db");
}
}
}
}
public void save() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(BESTTIME_DB);
} catch (FileNotFoundException e) {
System.err.println("Fail db neexistuje");
} finally {
if (fos != null) {
ObjectOutputStream oos = null;
try{
oos = new ObjectOutputStream(fos);
if (oos != null) {
oos.writeObject(playerTimes);
}
assert oos != null;
oos.close();
} catch (IOException e) {
//empty
}
}
}
}
@Override
public String toString() {
Formatter f = new Formatter();
for (int i = 0; i < playerTimes.size(); i++) {
PlayerTime pt = playerTimes.get(i);
f.format("%02d. %s - %ds.\n", i, pt.getName(), pt.getTime());
}
return f.toString();
}
public static class PlayerTime implements Comparable<PlayerTime> {
private final String name;
private final int time;
public PlayerTime(String name, int time) {
this.name = name;
this.time = time;
}
public String getName() {
return name;
}
public int getTime() {
return time;
}
@Override
public int compareTo(PlayerTime o){
return Integer.compare(this.time, o.getTime());
}
}
}
问题是您的PlayerTime
类不可序列化。
<代码>公共静态类PlayerTime实现可比较
应该是
<代码>公共静态类PlayerTime实现可比较
除非将对象写入文件,否则没有必要使最佳时间可序列化。
问题内容: 我是javaFx的新手,并且希望使用scenebuilder进行GUI开发,尽管遇到了类似的问题,但仍可能需要不同的观点,但我遇到了一个问题,尽管在网站或Web上搜索我的运气都不好。我试图在快速构建以测试功能后通过Netbeans加载FXML文件,以便代码简单,但是我无法在控制器中设置根文件。我的代码是以下公共类Divergex扩展的Application { 我尝试过将fxroot更
刚接触javaFx并希望使用scenebuilder进行GUI开发时,我遇到了一个问题,在网站上或整个web上搜索我的问题时都没有运气,尽管有人问过类似的问题,认为可能需要一个不同的视角。我试图在快速构建之后通过Netbeans加载一个FXML文件,以测试功能,这样代码就简单了,但是我无法在控制器中设置根文件。我的代码是下面的公共类Divergex extends Application{ 我尝试
在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?
我是一个长期LAMP开发人员,并且习惯在需要时使用autoloader加载类,但直到那时才开始,但现在正在学习Node.js。许多示例显示了加载所有文件的文件夹中的index.js文件。 例如:模型 在我的代码中,我使用 这是首选方法吗? 如果是,为什么? 为什么不使用自动装载机,只在需要的时候加载文件呢? 我在网上搜索,但没有找到任何明确解释这一点的东西。如果你有一篇文章对你有帮助,我将不胜感激
问题内容: 我正在应用程序中下载动态文件,并使用iframe来模拟ajax。我正在做的是,当下载请求发出后,我将创建一个动态的不可见iframe,并将iframe的src设置为下载网址。我能够成功下载该文件,但要求是显示一个下载下载指示器一旦开始下载,并在下载对话框出现后立即完成。我在创建iframe后提供了回调,以显示下载指示器已成功运行,并在iframe的“ onload”上提供了另一种方法,
在java.util.scanner.throwfor(未知源)在java.util.scanner.next(未知源)在java.util.scanner.nextint(未知源)在java.util.scanner.nextint(未知源) 文件顺序:string string int int int