2016-11-21 9 views
0

問題: 私は日々のファイルで頻繁な書き込み操作が行われるアプリケーションを持っています。私は毎回書き込みごとにファイルを開く必要はありません。タイマーベースのファイル永続的な接続

アプローチ: タイマーベースのアプリケーションは毎日午前12:01に開始され、スレッドを作成します。このスレッドでは、ファイルオープン接続が作成されます。したがって、GET要求が書き込み操作のために来るとき、それは単にスレッドが実行されていることをチェックし、ファイルに書き込むでしょう。午前12時01分に、前のスレッドはファイル接続を閉じます。

これを達成する方法の提案はありますか? 私はJavaを初めて使用しています。 Plsヘルプ

+0

これはサーブレット環境のWebアプリケーションですか? –

+0

あなたが日中にアプリケーションを終了/クラッシュするとどうなりますか? –

答えて

0

あなたは別のスレッドは必要ありません。

シングルトンを使用して書き込みを実行するだけです。書き込む必要があるたびに、ライターオブジェクトのメソッドを呼び出します。ライターオブジェクトは現在の日付をチェックし、現在開いているファイルが現在の日付に適切かどうかを調べます。もしそうなら、書く。そうでない場合は、ファイルを閉じ、今日の適切なファイルを作成/開いてから書き込みます。

オープンされたファイルを指すメンバ変数を持つオブジェクトは、そのオブジェクトがスコープから外れてガベージコレクトされるまでそのファイルを開いたままにします。

ポイントは、あなたが実際に真夜中の転がりを気にしないことです。あなたは書く必要がある瞬間にしか気にしません。

+0

Thanks @Basil Bourque。あなたはいくつかのコードを書くことによって私を助けることができますか?ファイルを永続的にどのように開いたままにしますか? – user3655225

+0

これらの問題はすべて、Stack Overflow:Singleton、ファイルのオープン、名前の一部としての日付のファイルの命名、および現在の日付のチェック(ヒント: 'LocalDate')で何度もカバーされています。スタックオーバーフローと調査を検索してください。また、Oracle Tutorialも読んでください。あなたはこれも過度に考えているかもしれません。ファイルを明示的に閉じるか、アプリケーションが終了するか、JVMが終了するかクラッシュするまで、ファイルは開いたままです。 –

+0

ありがとう – user3655225

関連する問題