簡體   English   中英

如何忽略MS Windows文件

[英]How can I ignore MS Windows files

我正在研究一個項目,該項目用於制作任何特定Windows路徑的文件列表。 它一個接一個地遍歷所有文件和文件夾並列出。 我想忽略所有MS Windows和MS Product的文件。 我從NSRL_FILE過濾了Microsoft產品列表。 但是現在我不想遍歷任何Windows文件夾或ms產品的文件夾。 有誰知道,我該如何實施?

注意:我不想在移動時忽略MS Windows列表和MS Product的相關文件夾名稱列表。

解決方案 :我從此論壇鏈接中找到了解決方案,它返回了以下詳細信息...

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 = 

您將不得不在文件夾名稱的某處列出要忽略的列表。 用每個名稱創建一個文本文件,在其中忽略。 從程序中讀取文件,如果在文件中找到與之匹配的路徑,請忽略它。 當您發現更多要忽略的文件夾時,只需將它們添加到列表中即可。

但是現在我不想遍歷任何Windows文件夾或ms產品的文件夾。 有誰知道,我該如何實施?

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

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

在此處輸入圖片說明

檢查還可以基於多個過濾條件,例如文件擴展名。

Java有一個稱為BasicFileAttributes的類,您可以在其中使用該類。

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

注意:我不確定這是否會完美工作,但這為您提供了替代方法。

基於user3437460的建議,您可以檢查所有者:

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

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

在Windows 7中進行了測試。我不知道它在其他Windows版本中的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM