2016-12-14 92 views
0

我正在處理一個項目,該項目用於製作任何特定Windows路徑的文件列表。它逐個遍歷所有文件和文件夾,並創建一個列表。 我想忽略所有MS Windows和MS產品的文件。 我從NSRL_FILE過濾了Microsoft產品列表。 但現在我不想遍歷任何Windows文件夾或ms產品的文件夾。 有沒有人有想法,我該如何實現這一點?我該如何忽略MS Windows文件

注意:我不想列出MS Windows和MS產品的相關文件夾名稱列表,以便在遍歷時忽略。

SOLUTION:我發現這個論壇link,它返回以下詳細信息的解決方案......

CompanyName = Microsoft Corporation 
FileDescription = SQM Client 
FileVersion = 10.0.14393.0 (rs1_release.160715-1616) 
InternalName = sqmapi 
LegalCopyright = © Microsoft Corporation. All rights reserved. 
OriginalFilename = sqmapi.dll 
ProductName = Microsoft® Windows® Operating System 
ProductVersion = 10.0.14393.0 
OleSelfRegister = 
+0

那麼,你必須知道「MS WIndows或MS產品文件」是什麼。這不是一個編程問題。 – lexicore

+0

感謝您的回覆,您的意思是,我們應該列出MS Products文件夾和文件以及MS Windows,然後在遍歷時,在列表中檢查它。最終用戶不希望從文檔文件夾中選擇一個文件夾,一個來自下載,一個來自桌面文件夾。他希望他選擇父文件夾,然後應用程序忽略與Microsoft相關的不需要的文件。我們有一個微軟文件列表,我們需要相同類型的文件夾列表。 –

回答

1

你將必須有一個清單某處的文件夾名稱,不容忽視。用每個名稱創建一個文本文件,以忽略它。從程序中讀取文件,如果找到與文件中路徑匹配的路徑,請忽略它。當您發現更多要忽略的文件夾時,只需將它們添加到列表中即可。

+0

OP說..我不想列出MS Windows和MS產品的相關文件夾名稱列表忽略而遍歷' – user3437460

+1

我知道他說,但除非有一些webservice或API,他可以打電話來獲取列表,他會自己做。 –

+0

不,你沒有明白我的觀點。我想要這樣的文件夾的列表,但不想手動準備。如果任何網站或服務提供這種類型的上傳時間的列表。否則user3437460暗示也不錯。 –

0

但現在我不想穿越任何Windows文件夾或ms產品的文件夾。有沒有人有想法,我該如何實現這一點?

如果您不想保留要跳過的名稱列表。我能想到的使用Java的唯一方法是從文件中讀取元數據。

您可以嘗試從文件的元數據中讀取公司屬性,並檢查它是否與「Microsoft Corporation」匹配。

enter image description here

的檢查也可以基於多個過濾器審覈規定,例如文件擴展名。

Java有一個被稱爲BasicFileAttributes的類,您可以將它用於此目的。

看看這裏的文檔:https://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/BasicFileAttributes.html

注:我不知道這是否會很好地工作,但是這給你一個選擇。

+0

感謝您的好建議,我會試試這個。 –

+0

@TejKiran還有其他的選擇,但我認爲這會讓你更麻煩,所以這是你可以嘗試的。如果有幫助,您可以接受/投票我的解決方案。謝謝。 – user3437460

+0

它僅返回以下細節{[email protected]} fileAttrs = 32 創建時間= 131131430412492635 的LastAccessTime = 131131430412492635 lastWriteTime = 131131430412492635 大小= 34128 reparseTag = 0 volSerialNumber = 0 fileIndexHigh = 0 fileIndexLow = 0。沒有其他屬性的詳細信息 –

0

上user3437460的建議大廈,您可以檢查所有者:

String owner = Files.getOwner(path).getName(); 
boolean isSystemFile = owner.equals("NT SERVICE\\TrustedInstaller"); 

它遠非完美,但總比沒有好。

在Windows 7中測試我不知道這是如何在其他Windows版本中的行爲。

相關問題