gpt4 book ai didi

c# - 如何跳过跳过未授权文件的目录中的所有文件?

转载 作者:行者123 更新时间:2023-12-03 13:49:30 24 4
gpt4 key购买 nike

我需要获取C驱动器中所有文件的列表,这些文件允许写入,而读取,因此我尝试这样进行操作:

string[] files = Directory.GetFiles(@"C:\\", "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
Console.WriteLine(file);
}
但是我立即收到 UnauthorizedAccess 异​​常

最佳答案

如果您使用的是.NET Core 2.1或更高版本,则应该可以使用 Directory.GetFiles(String, String, EnumerationOptions) 并传递 EnumerationOptions.IgnoreInaccessible :

Gets or sets a value that indicates whether to skip files or directories when access is denied (for example, UnauthorizedAccessException or SecurityException).

var files = Directory.GetFiles(@"C:\\", "*.*", 
new EnumerationOptions {
IgnoreInaccessible = true,
RecurseSubdirectories = true,
});
笔记:
  • 由于您是递归搜索的,因此您可能还考虑切换到 Directory.EnumerateFiles(String, String, EnumerationOptions) 以提高性能:

    The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.


  • 在您写的标题中,我如何才能跳过跳过未授权文件的目录中的所有文件?但是在您写的问题中,我需要获取C驱动器中所有文件的列表,这些文件允许编写编写
    仅仅因为Directory.GetFiles()IgnoreInaccessible = true返回了文件,并不意味着您可以得出结论该文件实际上是可写和可读的。为此,您需要查看文件的有效权限。参见Checking for directory and file write permissions in .NET。或者,您可以尝试打开文件并检查流的CanReadCanWrite属性,有关详细信息,请参见Zbigniew的C# file status (readable, writeable, is file, is directory)
  • 关于c# - 如何跳过跳过未授权文件的目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65542300/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com