支持长路径的C#I / O库(解决PathTooLongException)

时间:2013-02-19 07:42:33

标签: c# winapi io pathtoolongexception

我的开源software将远程文件夹同步到本地桌面。远程文件夹可以在Alfresco上,其中路径长度没有限制(/root/very/very/very/long/name.txt)。

在开发应用程序时,我使用了System.IO.File.OpenWriteSystem.IO.Stream.Write,但它显示为they don't support paths over a few hundred characters,因此用户在处理长路径时会报告PathTooLongException等错误。

必须绝对避免使用

UNC路径,因为它们会导致与某些应用程序不兼容。

在这种情况下应该使用哪些库/代码?

它必须是开源的C#。

5 个答案:

答案 0 :(得分:3)

AlphaFS允许您使用非常长的路径(使用“\?\”样式)并模仿System.IO命名空间。

您可能就像使用System.IO一样使用此库。例如,AlphaFS.Win32.Filesystem.File.Copy()代替System.IO.File.Copy()。

source

答案 1 :(得分:2)

您可以尝试Base Class Libraries Long Path implementation。但请注意,如果您开始混淆默认的.NET I / O方法,并非所有内容都能正常工作。

答案 2 :(得分:1)

.NET 2.0 Workaround for PathTooLongException”(文章+代码)。

根据代码项目开放许可证(CPOL)获得许可,该许可证不是开源apparently

虽然只有2次提交不适合非常活跃的项目......

答案 3 :(得分:1)

Native File System Access

自修订版185(2月19日 th ,2013)以来,该库由Microsoft Public License (MS-PL)覆盖,如源代码文件的标题中所指定。

看起来很有希望,但作者advises反对在企业环境中使用它,因为代码不够扎实。

此库有一些unit tests,但缺少文档。

答案 4 :(得分:1)

您可以尝试使用以下答案中列出的相对路径来分割路径:

Directory.SetCurrentDirectory()

PathTooLongException in C# code