从网络共享中删除长路径太长的文件夹

问题描述 投票:4回答:1

我正在尝试使用C#删除网络上共享位置中的文件夹。 Windows无法处理某些文件夹路径。我为此尝试了多种选择。我发现最好的方法是创建一个FileSystemObject,在路径中添加\\?\,然后在要删除的路径上调用DeleteFolder,该方法在本地计算机上可用于太长的路径,因为我已将驱动器映射为C :和G:等,但是当我尝试在网络共享文件夹上使用它时,我得到一个HRESULT:0x800A004C(CTL_E_PATHNOTFOUND)或值不在预期范围内。

以下是我的代码:

private static void DeletePathWithLongFileNames(string path)
    {
        string tmpPath = @"\\?\" + path;
        FileSystemObject fso = new FileSystemObject();
        fso.DeleteFolder(tmpPath, true);
    }

例如,网络+共享文件夹为\\ myServer \ mySharedFolder \ folder1 \ etc \ etc,这就是我要发送至删除功能的路径字符串然后tmpPath显示为“ \\\\?\\\\\ myServer \\ mySharedFolder \\ folder1 \\ etc \\ etc”

我对UNC不太了解,所以不知道这是什么问题。我很确定tmpPath变量出了点问题,但是我不确定。也许这是语法错误,但我无法终生找出错误所在。预先感谢您的帮助

编辑:我相信我已经找到了答案,我正在测试它。到目前为止,它对我有用。如果我在以下路径\\?\ UNC \ server \ sharedFolder \ folder1 \ etc \ etc中运行DeleteFolder方法,这似乎可以正常工作。现在,我只需要弄清楚如何消除所有这些多余的斜杠。

编辑2:这确实有效,并在网络上的共享文件夹上对其进行了测试。这只是我不了解UNC路径的原因。

c# filesystemobject
1个回答
1
投票

删除太长路径的安全方法是使用AlphaFS。 AlphaFS是一个.NET库,它为.NET平台提供了比标准System.IO类更完整的Win32文件系统功能。标准.NET System.IO的最显着缺陷是缺乏对高级NTFS功能的支持,尤其是对扩展长度路径的支持(例如,文件/目录路径长于260个字符)。

请参阅目录删除:http://alphafs.alphaleonis.com/doc/2.2/api/html/BE179564.htm

Alphaleonis.Win32.Filesystem.Directory.Delete(path)
© www.soinside.com 2019 - 2024. All rights reserved.