我想在我的文件枚舉中過濾出路徑C:\$Recycle.bin
。我怎樣才能做到這一點?SearchOption.AllDirectories過濾器
var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).OrderBy(p => p).ToList();
當我執行上述,我得到下面的錯誤。
其他信息:訪問路徑'C:\ $ Recycle.Bin \ S-1-5-21-1600837348-2291285090-976156579-500'被拒絕。
我也想計算每個文件的md5。我有:
var mainDirectory = new DirectoryInfo("\\");
var files = GetDirectories(mainDirectory);
List<string> drives = new List<string>();
foreach (var file in files)
{
//Console.WriteLine(file.Name);
drives.Add(mainDirectory + file.Name);
}
MD5 md5 = MD5.Create();
foreach (string file in drives)
{
// hash path
string relativePath = file.Substring("\\".Length + 1);
byte[] pathBytes = Encoding.UTF8.GetBytes(relativePath.ToLower());
md5.TransformBlock(pathBytes, 0, pathBytes.Length, pathBytes, 0);
// hash contents
try
{
byte[] contentBytes = File.ReadAllBytes(file);
md5.TransformBlock(contentBytes, 0, contentBytes.Length, contentBytes, 0);
md5.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
}
catch(UnauthorizedAccessException)
{
continue;
}
catch
{
continue;
}
Console.WriteLine(BitConverter.ToString(md5.Hash).Replace("-", "").ToLower());
}
Console.ReadKey();
恐怕這可能是一個棘手的問題。我認爲它是框架中的一個錯誤。 :( – Gabe
你不能!唯一的選擇是自己寫一個遞歸函數 – Silvermind
可能的重複[在搜索文件時訪問被拒絕的錯誤](http://stackoverflow.com/questions/10458862/access-denied-error -in-while-searching-for-files) – Gabe