5

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

在开发我使用的应用程序时System.IO.File.OpenWriteSystem.IO.Stream.Write,但似乎它们不支持超过几百个字符的路径,因此用户报告错误,例如PathTooLongException使用长路径时。

必须绝对避免使用UNC路径,因为它们会导致与某些应用程序不兼容。

在这种情况下应该使用什么库/代码?

它必须是开源 C#。

4

5 回答 5

3

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

您可能可以像使用 System.IO 一样使用这个库。例如,AlphaFS.Win32.Filesystem.File.Copy() 而不是 System.IO.File.Copy()。

来源

于 2013-02-19T10:03:54.963 回答
2

您可以尝试Base Class Libraries Long Path implementation。但请注意,如果您开始与默认的 .NET I/O 方法混用,则并非一切都会奏效。

于 2013-02-19T08:00:20.880 回答
1

PathTooLongException 的 .NET 2.0 解决方法”(文章+代码)。

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

不过,只有 2 次提交并不能构成一个非常活跃的项目……

于 2013-02-19T07:42:32.717 回答
1

本机文件系统访问

自修订版 185(2013 年 2 月 19)以来,该库由Microsoft 公共许可证 (MS-PL)涵盖,如源代码文件的标题中所述。

看起来很有希望,但作者建议不要在企业环境中使用它,因为代码不够可靠。

这个库有一些单元测试,但缺少文档。

于 2013-02-19T07:44:19.330 回答
1

您可以尝试使用此答案中概述的相对路径来拆分路径,方法是:

Directory.SetCurrentDirectory()

C# 代码中的 PathTooLongException

于 2013-02-19T08:02:00.897 回答