如何忽略MS Windows文件

时间:2016-12-14 13:03:46

标签: java windows

我正在开发一个项目,用于创建任何特定Windows路径的文件列表。它逐个遍历所有文件和文件夹并制作一个列表。 我想忽略所有MS Windows和MS Product的文件。 我从NSRL_FILE过滤了Microsoft产品列表。 但现在我不想遍历任何Windows文件夹或ms产品的文件夹。 有没有人有想法,我该如何实现呢?

注意:我不希望在遍历时列出MS Windows和MS Product的相关文件夹名称列表。

解决方案:我找到了此论坛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 = 

3 个答案:

答案 0 :(得分:1)

您必须在要忽略的文件夹名称的某个位置放置一个列表。创建一个文本文件,其中包含要忽略的每个名称。从程序中读取文件,如果找到与文件中的文件匹配的路径,请忽略它。当您找到更多要忽略的文件夹时,只需将它们添加到列表中即可。

答案 1 :(得分:0)

  

但现在我不想遍历任何Windows文件夹或ms产品的文件夹。有没有人有想法,我该如何实现呢?

如果您不想保留要跳过的名称列表。我能想到使用Java的唯一方法是从文件中读取元数据。

您可以尝试从文件的元数据中读取公司属性,并检查它是否与“Microsoft Corporation”匹配。

enter image description here

检查也可以基于多个过滤标准,例如文件扩展名。

Java有一个名为wl.analytics.logs.packages的类,您可以将其用于此目的。

请查看此处的文档:https://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/BasicFileAttributes.html

注意:我不确定这是否能完美运行,但这会为您提供另一种选择。

答案 2 :(得分:0)

根据user3437460的建议,您可以检查所有者:

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

这远非完美,但总比没有好。

在Windows 7中测试过。我不知道这在其他Windows版本中是如何表现的。