2

ファイルが以前に処理されたかどうかを確認するにはどうすればよいですか? アプリケーションのファイル ソースであるリモート ストレージの場所があります。私のプログラムはこの場所からファイルを取得し、スケジュールされた方法で処理します。次回、未処理のファイルのみをフェッチすることを確認するにはどうすればよいですか? ファイル属性の使用を考えています。アーカイブと変更日が解決策になる可能性があります。しかし、ファイル属性の 2 ビットが使用されていないことを知りました。Java でこれらのフィールドを使用するにはどうすればよいですか? ところで、私はデータベースを使いたくありません。

4

2 に答える 2

3

一般的な戦略は、何らかの形式のハッシュ関数を使用してチェックサムを作成することです。ファイルのチェックサムを記録し、チェックサムによって識別された処理済みファイルのリストを問題のファイルと比較します。問題のファイルのチェックサムがリストにある場合、そのファイルは既に処理されています。

処理されたファイル チェックサムのリストを保護します。あなたがそれを紛失したり、破損したりすると、それは長くて悪い日になるかもしれません.

不要なネットワーク トラフィックを防ぐために、潜在的な入力ファイルに対応するチェックサムを含む「チェック」ファイルをリモート リポジトリに準備することを検討してください。

編集:

さらにコメントすると、ファイルシステム属性を直接操作できる可能性があります。提案された Java 1.7 仕様では、ファイル システム固有の属性ビューを導入して、これらの属性と直接対話します。関心のあるビューは「DosFileAttributeView」です。

基本的な使い方は次のようになります (「入力」は Java の「パス」に基づくファイルです。必要な例外処理を追加します)。

// import as necessary from java.nio.file and java.io

DosFileAttributeView view = input.getFileAttributeView(DosFileAttributeView.class);

//Check if the system supports this view 
if (view != null) 
{
    DosFileAttributes attributes = view.readAttributes();

    // skip any file already marked as an archive
    if (!attributes.isArchive()) 
    {
         myObject.process(input)
         attributes.setArchive(true)
    }
}
于 2011-03-26T21:55:33.893 に答える
1

ファイルの名前を変更できますか (例: "filename.archive")? または「アーカイブ」サブディレクトリに?

于 2011-03-26T22:56:54.373 に答える