任何人都可以给我一个关于在Java中保存整数的快速提示。我正在使用定时器和放大器制作定制时钟。我想在退出程序时保存时间(或启动自动重启并调用保存方法)&从它停止的地方开始。
我的代码:
MainClass中的方法:
t = new Timer();
tt = new JGameTimer();
t.scheduleAtFixedRate(tt, 1000, 1000);
TmerClass:
private static int timeInSeconds = 0, timeInMinutes = 0, timeInHours = 0, timeInDays = 0, timeInYears = 0;
private int lastTimeInSeconds, lastTimeInMinutes, lastTimeInHours, lastTimeInDays, lastTimeInYears;
private boolean timeHasBeenSet = false;
public void run() {
if (!timeHasBeenSet) {
timeInSeconds = lastTimeInSeconds;
timeInMinutes = lastTimeInMinutes;
timeInHours = lastTimeInHours;
timeInDays = lastTimeInDays;
timeInYears = lastTimeInYears;
timeHasBeenSet = true;
}else{
continueTime();
}
}
public void saveTime() {
lastTimeInSeconds = timeInSeconds;
lastTimeInMinutes = timeInMinutes;
lastTimeInHours = timeInHours;
lastTimeInDays = timeInDays;
lastTimeInYears = timeInYears;
}
public void continueTime() {
timeInSeconds++;
if (timeInSeconds == 60) {
timeInSeconds = 0;
timeInMinutes++;
}
if (timeInSeconds == 10) {
saveTime();
System.out.println("Time Saved (Seconds)");
}
if (timeInMinutes == 60) {
timeInMinutes = 0;
timeInHours++;
}
if (timeInMinutes == 2) {
saveTime();
System.out.println("Time Saved (Minutes)");
}
if (timeInHours == 24) {
timeInHours = 0;
timeInDays++;
}
if (timeInDays == 2920) {
timeInDays = 0;
timeInYears++;
}
System.out.println("Time is "+timeInYears+":"+timeInDays+":"+timeInHours+":"+timeInMinutes+":"+timeInSeconds+"");
}
答案 0 :(得分:2)
我建议将java.io.DataOutputStream
与基础java.io.FileOutputStream
一起使用。 DataOutputStream
提供了编写基本类型的方法:
DataOutputStream output = new DataOutputStream(
new FileOutputStream(new File("my-file.dat")));
output.writeInt(someInt);
// ... write more values ...
您可以稍后使用DataInputStream
和FileInputStream
向后阅读(以相同顺序)。
或者,您可以编写一个包含要保存的数据的类,并使用Java的序列化机制来保存/加载它。
答案 1 :(得分:0)
快速提示将整个时间对象存储到文件中。实现接口Serializable,然后在Web上搜索如何使用ObjectOutputStream存储/读取可序列化对象。要在关机时添加代码,请查看Running code on program exit in Java。