簡體   English   中英

如何遞歸獲取所有非系統目錄?

[英]How can I recursively get all non-system directories?

我最近在NTFS卷上禁用了8.3文件名,並注意到枚舉包含大量文件的新目錄所花費的時間顯着減少(現在僅花費25%的時間)。 但是,這不適用於現有文件。

要更改此設置,我想創建一個exe文件,它將以遞歸方式遍歷驅動器上所有不在系統文件夾中的文件,將它們移至temp目錄,然后再移回以強制刪除8.3文件名。他們。 我已經知道如何枚舉目錄文件並對每個文件執行此操作,但是我不太確定如何獲取磁盤上所有目錄的列表,而不包括任何系統目錄。 我可以在DirectoryInfo對象中尋找屬性嗎? 如果沒有,我可以采取什么其他方法來完成此任務?

干得好。 我相信這是您的追求...有關更多信息,請參見FileAttributes

public void RecursivePathWalk(string directory)
{
    string[] filePaths = Directory.GetFiles(directory);
    foreach (string filePath in filePaths)
    {
        if (IsSystem(filePath))
            continue;

        DoWork(filePath);
    }

    string[] subDirectories = Directory.GetDirectories(directory);
    foreach (string subDirectory in subDirectories)
    {
        if (IsSystem(subDirectory))
            continue;

        RecursivePathWalk(subDirectory);
    }
}

public void DoWork(string filePath)
{
    //Your logic here
}

public bool IsSystem(string path)
{
    FileAttributes attributes = File.GetAttributes(path);
    return (attributes & FileAttributes.System) != 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM