保存/加载数据?

时间:2013-09-02 07:53:35

标签: java eclipse load save clock

我还在制作钟表。我希望保存/加载我使用时钟时的数据,所以当我在特定时间(如1月23日)关闭时,当我重新打开eclipse时,我可以做一些事情,这会让我回到上述时间。有任何想法吗? (请求Snippits)

import java.util.Scanner;
import static java.lang.System.out;
public class Clock {
public static void main(String args[]) throws InterruptedException {

    Scanner keyboard = new Scanner(System.in);

    out.print("Set the week and day.");
    String specday = null;
    String days = null;
    String season = null;
String morning = null;
String month = null;
int inputweek = keyboard.nextInt();
int inputday = keyboard.nextInt(); 
int week = inputweek;
int day = inputday;
int hours = 1;
int minutes = 0;
int seconds = 0; {
}
for (;seconds <= 60; seconds++) {
Thread.sleep(1);
 if (seconds == 60) minutes++; {
if (minutes == 60) hours++; {
if (hours == 24) day++; {
     if (day == 7 && hours == 23 && minutes == 59 && seconds == 59)week++; {
if (week > 0 && week < 9) season = " summer";
if (week > 44 && week < 49) season = " summer";
if (week > 8 && week < 21) season = " autumn";
if (week > 20 && week < 33) season = " winter";
if (week > 32 && week < 45) season = " spring";
if (week > 0 && week < 5) month = " january";
if (week > 4 && week < 9) month = " february";
if (week > 8 && week < 13)month = " march";
if (week > 12 && week < 17) month = " april";
if (week > 16 && week < 21) month = " may";
if (week > 20 && week < 25) month = " june";
if (week > 24 && week < 29) month = " july";
if (week > 28 && week < 33) month = " august";
if (week > 32 && week < 37) month = " september";
if (week > 36 && week < 41) month = " october";
if (week > 40 && week < 45) month = " november";
if (week > 44 && week < 49) month = " december";
if (week == 47 && day == 2) specday = " christmas eve";
if (week == 47 && day == 3) specday = " christmas";
if (week == 47 && day == 4) specday = " boxing day";
if (hours < 12) morning = " am";
if (hours > 11) morning = " pm";
if (day == 1) days = " monday";
if (day == 2) days = " tuesday";
if (day == 3) days = " wednesday";
if (day == 4) days = " thursday";
if (day == 5) days = " friday";
if (day == 6) days = " saturday";
if (day == 7) days = " sunday";
}
System.out.println(hours + ":" + minutes + ":" + seconds + morning + days + month + season + specday); {
    if (seconds == 60) seconds = 0;
    if (minutes == 60) minutes = 0;
if (hours == 24) hours = 0;
if (day > 7) day = 1;
if (week == 49) week = 1;
if (specday == null); specday = " ";
}
}
}
}
}
}
}

2 个答案:

答案 0 :(得分:0)

时钟必须实现Serializable

public Clock implements Serializable{
     //logic
}

如何序列化时钟状态:

FileOutputStream fileOut =
         new FileOutputStream("/tmp/clock.state");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(clockInstance);
out.close();
fileOut.close();

如何阅读下一次运行:

FileInputStream fileIn = new FileInputStream("/tmp/clock.state");
ObjectInputStream in = new ObjectInputStream(fileIn);
clockInstance = (Clock) in.readObject();
in.close();
fileIn.close();

答案 1 :(得分:0)

Properties使用基本键/值String对来存储特定键的值。

它还有方便的storeload方法

FileReader reader = null;
Properties properties = new Properties();
try {
    reader = new FileReader("clock.properties");
    properties.load(reader);
} catch (IOException exp) {
    exp.printStackTrace();
}  

String lastTime = reader.getProperty("Clock.lastTime");
// Use something like SimpleDateFormat to parse the String back to a Date if required...

String strHour = reader.getProperty("Clock.lastHour", "0");
String strMin = reader.getProperty("Clock.lastMinute", "0");
String strSec = reader.getProperty("Clock.lastSecond", "0");
// Use Integer.toString to parse the results, don't forget to check for nulls ;)

您还可以使用类似于Properties API的Preferences API,但支持自动保存和支持原始数据类型