我不是Java專家,但我正在編寫的程序將處理高吞吐量。所以我認爲我會爲觀點尋找一點點人羣。這是情況。檢查Java中匹配文件的有效方法
java進程將會看一個文件目錄進行處理,這些文件將被配對(要被存儲的數據文件和要被編目的元信息的xml文件)。所以我需要獲取當前文件列表,檢查所需的雙胞胎,然後進行處理。
文件將始終具有匹配的文件名,並且僅在文件擴展名方面有所不同,例如, filename1.jpg filename1.xml filename2.jpg filename2.xml
我有三種選擇,我想的那麼遠。
使用FilenameFilter用的File.List(的FilenameFilter)調用,以檢查是否有文件名文件總數大於1
使用兩filenamefilters生成的文件以.XML和不帶列表.xml,將非XML文件列表轉換爲ArrayList並調用Collections.binarySearch()。
生成所有不帶.xml擴展名的文件的列表,使用此列表作爲基於文件名假定.xml文件的鍵/值對的哈希表的鍵。然後運行哈希列表並在處理之前檢查.xml孿生子的存在。
有什麼想法?
EDITS /評論
看的建議和他的動手我現在使用兩個FilenameFilters,一個列出了XML文件和一個不打算之後。 XML文件列表被剝離了xml擴展名並轉儲到散列表中。然後迭代數據文件列表,在繼續之前調用hashlist.contains()以查看哈希集中是否存在匹配。
下面提到處理不完整文件的問題。正如我在評論中所說的,我認爲新寫入的文件在非寫入過程中不可見,直到寫入完成(新文件,未打開進行編輯)
+1:明顯的解決方案比我的更好。 –