簡體   English   中英

如何列出有符號鏈接的文件/目錄

[英]How to list files/directories where there are symbolic links

我有一個帶有符號鏈接的文件夾(該目錄上的 cmd dir ,如果有任何區別,則將它們列為SYMLINKD )。 每當我嘗試調用Directory.GetFilesDirectory.GetDirectories()DirectoryInfo中的任何其他變體時,都會出現以下異常:

System.IO.DirectoryNotFoundException:找不到路徑“SYMBOLIC_LINK_PATH”的一部分。

我還嘗試使用前綴為\\?\的目錄(此處提到的“長路徑前綴”: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file #最大路徑長度限制

如何遍歷目錄並刪除這些符號鏈接? 我有什么替代方法可以遍歷目錄?

(正如評論中所建議的那樣,我也嘗試過Directory.GetFiles("DirectorytoSearch", "*", SearchOption.AllDirectories)具有相同的結果: DirectoryNotFoundException即使MSDN 文章指出此選項應該“包括重新解析點,例如。 ...符號鏈接")

你提到的那篇文章:
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation

發布於 2020 年 9 月 15 日,這是最近的事。
您肯定已經更新了您正在使用的 .NET 運行時,對吧?

此外,至少需要 Windows 10 版本 1607,請仔細檢查您是否已更新。

何時以及如果您要更新運行時,請檢查它的最新更新是否至少在 2020 年 9 月 15 日之后發布。

如果您使用的是 .NET 框架運行時,請嘗試在 .NET 核心運行時中執行此操作,因為它更新更頻繁。

如果一切都失敗了,試試這個解決方案: https://stackoverflow.com/a/53439677/2536887
否則提交錯誤報告。

每個人的意見幫助我縮小范圍並找出問題所在。 我相信問題是我刪除了符號鏈接的目標,但我的遞歸刪除 function 仍然發現它是一個目錄。 因此,當我嘗試枚舉該符號鏈接的文件/目錄時,它拋出了 DirectoryNotFound 異常(在那里遇到肯定會令人困惑,因為該目錄似乎仍然存在 - 即使在文件資源管理器中,直到您單擊它)。

解決方案是在嘗試收集目錄的子目錄時,捕獲DirectoryNotFound異常並嘗試刪除目錄。 這對我有用

        FileInfo[] files = null;
        try
        {
            files = currentDirectory.GetFiles("*", SearchOption.AllDirectories);
        }
        catch (DirectoryNotFoundException)
        {
            currentDirectory.Delete(true);
        }

暫無
暫無

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

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