2011-12-01 47 views
0

我想從我的磁盤列出文件到BlockingQueue和線程將處理它們。在中途,如果磁盤上的文件被更新,則隊列也將刷新。有什麼辦法可以找到文件是否正在被線程處理,並且不需要再次在隊列中添加?如何檢測文件是否在java中進行處理?

+0

我使用Windows。 – RamIndani

+4

我無法理解你的問題。我認爲你需要把它分解成至少四個句子。 – pzulw

+0

「..如果磁盤上的文件得到更新..」 - 所以你想知道如果文件是外部更新,而不是你的線程? –

回答

0

如果你想idnetify其中有一個文件打開過程中,你可以使用

剛剛發現現在使用谷歌。


你可以做

Set<File> queued = ... 
Queue<File> toProcess = 


// add to the queue if its a new entry. 
if(queued.add(file)) 
    toProcess.add(file); 
+0

執行此代碼「..如果磁盤上的文件得到更新..」檢查? –

+0

您需要在Java 7中使用WatchService來完成此操作,或者通過重複導航目錄來查找差異。 –

+0

WatchService會告訴你更改的來源是否是RamIndani的線程? –

相關問題