繁体   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