0

RandomAccessFile を使用して Java で .dat ファイルを生成するコードを書いています。

各ファイルは 1 時間の長さで作成されるため、1 分ごとに新しいデータが追加され、1 時間後に新しいファイルが作成されます。

たとえば、各ファイル名の日付/時刻形式は 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 に答える