0

我正在编写将使用 RandomAccessFile 在 Java 中生成 .dat 文件的代码。

每个文件创建一个小时,因此每分钟后都会添加新数据,一小时后会创建一个新文件。

例如 - 每个文件名的日期/时间格式为 DD-MM-YY-HH。所以现在是 05-11-13-14,下一个是 05-11-13-15,以此类推。

在文件中,我收集了 5 条数据,第一条是一个长值,即当时的当前时间戳。

我需要的是获取时间戳以每分钟打印一次结果。

这是我到目前为止所做的;

public static void main (String [] args) throws FileNotFoundException
{ 
    try
    {
        DateFormat df = new SimpleDateFormat("dd-MM-yy-HH");
        Date date = new Date();
        System.out.println(df.format(date));

        File fileName = new File(df.format(date) + ".dat");
        RandomAccessFile raf = new RandomAccessFile(fileName, "rw");

        for(int i = 0; i < 5; i++)
        {   
            //1383580800000 4/11/2013 4pm
            raf.writeLong(Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis());
            raf.writeInt(10);
            raf.writeInt(2);
            raf.write((byte)1);
            raf.writeInt(3);        
        }
        raf.close();
    }
    catch(IOException iOE)
    {
        System.err.println(iOE);
    }
}
4

2 回答 2

2

为了简单地打印时间戳,您所要做的就是date.getTime();. 如果您只想要纪元值,那么绝对没有理由触摸任何日历或时区类。

如果你想安排每分钟运行一次,我会看看ScheduledThreadPoolExecutor类,或者只是一个Timer

于 2013-11-05T14:28:26.540 回答
0

您可以为此使用TimerTimerTask

这将run每 60 秒执行一次该方法。

从以下开始:new ScheduleEveryMinute().start()

import java.util.Timer;
import java.util.TimerTask;

public class ScheduleEveryMinute
{
    Timer timer;

    public ScheduleEveryMinute()
    {
        timer = new Timer();
    }

    public void start()
    {
        timer.schedule(new ScheduleTask(), 60000, 60000);
    }

    class ScheduleTask extends TimerTask
    {
        public void run()
        {
             //code to schedule
        }
    }
}
于 2013-11-05T14:32:07.140 回答