0

私は2つのJavaプログラムを持っています

1)最初のプログラムは毎日実行され、ファイルabc_currenttimestamp.csv(abc_1357615107など)を生成します。

2)2番目のプログラムは毎日実行され、最初のプログラムによって生成されたファイルを読み取ります。ただし、読み取らなければならないファイルは前日のファイルであり、今日生成されたファイルではありません。

たとえば、最初のプログラムは1月9日と1月10日などにファイルを生成します。2番目のプログラムは10日から実行を開始し、1月9日のタイムスタンプを持つファイルを読み取る必要があります。

1つの方法は、2番目のプログラムがすべてのファイルのタイムスタンプをチェックし、それが前日のタイムスタンプであるかどうかを確認することです。Javaでこれを行う方法がわかりません。

別の方法として、最初のプログラムがファイル名をフィールドに書き込み、2番目のプログラムがこのフィールドから読み取ることでファイル名を認識している可能性があります。しかし、問題は、最初のプログラムが毎日実行されるたびに、このフィールドが今日のファイル名で上書きされることです。

ありがとう!

4

2 に答える 2

0

あなたは単に遊ぶことができます

file.lastModified();

または、ファイル名自体に日付と時刻を追加するだけで、ファイルddmmyyyy.csvが存在するかどうかを簡単に確認できます。

于 2013-01-09T18:27:39.373 に答える
0

ファイル名からタイムスタンプを取得するというアイデアが気に入っています。そうすれば、誰かが手動でファイルを変更しても、プロセスが混乱することはありません。

それは、あなたが持っているタイムスタンプ値の種類によって異なります。Java の場合は以下のコードを使用し、UNIX の場合は 1000 を掛けてからこれを実行します。

Calendar today = Calendar.getInstance(); // use this to get todays date (and time)

Calendar mydate = Calendar.getInstance(); // this uses the timestamp for comparing
mydate.setTimeInMillis(timestamp);

// This prints out the date and shows how to get values to compare. You can also 
//  subtract one day from today's date to handle rollover of months and years.
out.println( mydate.get(Calendar.DAY_OF_MONTH)+"."+mydate.get(Calendar.MONTH)+"."+mydate.get(Calendar.YEAR));

ここからいくつかの議論があります:

Java: UNIX タイムスタンプからの日付

于 2013-01-09T18:28:11.327 に答える