繁体   English   中英

隐藏隐藏的文档,并从C#目录中排除文件扩展名

[英]Hiding hidden documents and excluding file extensions from a directory in C#

我在互联网上搜索并找到了一些解决方案,但对于我来说它们似乎不起作用,我也不知道为什么。 我列出了工作目录中所有的.xls文件。 现在,由于我使用的是Office的较早版本,因此我希望排除.xlsx文件以及所有临时文件,但这似乎不起作用。 我试过了:

 FileAttributes fileAttribute = File.GetAttributes(Directory.GetCurrentDirectory());

   string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.xls")
   .Where(name => !name.EndsWith(".xlsx") || !name.Contains(@"\~$") 
   || (fileAttribute & FileAttributes.Hidden) == 0).ToArray();

现在,由于没有“ fileAtrribute”,我没有第一行就使用“ name.Attributes”进行了尝试,但是他找不到它。 我也尝试搜索“?.xls”,但是他没有列出任何文件。 我究竟做错了什么?

您有以下逻辑问题:

string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.xls")
   .Where(name => !name.EndsWith(".xlsx") || !name.Contains(@"\~$") 
   || (fileAttribute & FileAttributes.Hidden) == 0).ToArray()

你要和,而不是

string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.xls")
   .Where(name => !name.EndsWith(".xlsx") && !name.Contains(@"\~$") 
   && (fileAttribute & FileAttributes.Hidden) == 0).ToArray()

但是,您的文件属性正在检查目录,而不是文件。

所以你实际上想要

string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.xls")
   .Where(name => !name.EndsWith(".xlsx") && !name.Contains(@"\~$") 
   && (File.GetAttributes(name) & FileAttributes.Hidden) == 0).ToArray()

您有几个问题。 首先,您的|| 的应该是&& 您想排除名称不以xlsx结尾并且不包含〜$并且不隐藏的文件。

其次,对隐藏属性的检查看起来不正确。 当前,您正在获取文件夹的属性,然后将其与每个文件进行比较。 您确实要获取每个文件的属性。

总之,您需要:

string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.xls")
.Where(name => !name.EndsWith(".xlsx") && !name.Contains(@"\~$")
&& (File.GetAttributes(name) & FileAttributes.Hidden) == 0).ToArray();

由于调用Directory.GetFiles(Directory.GetCurrentDirectory(),“ *。xls”),您已经排除了.xlsx和临时文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM