支持长路径的C#I/O库(用于解决PathTooLongException)
My open source将远程文件夹同步到本地桌面。远程文件夹可以位于露天,路径长度没有限制(支持长路径的C#I/O库(用于解决PathTooLongException),c#,winapi,io,pathtoolongexception,C#,Winapi,Io,Pathtoolongexception,My open source将远程文件夹同步到本地桌面。远程文件夹可以位于露天,路径长度没有限制(/root/very/very/very/long/name.txt) 在开发应用程序时,我使用了System.IO.File.OpenWrite和System.IO.Stream.Write,但似乎是这样,因此用户在使用长路径时会报告错误,如PathTooLongException 必须绝对避免使用路径,因为它们会导致与某些应用程序不兼容 在这种情况下应该使用什么库/代码 它必须是开源的C#。“”
/root/very/very/very/long/name.txt
)
在开发应用程序时,我使用了System.IO.File.OpenWrite
和System.IO.Stream.Write
,但似乎是这样,因此用户在使用长路径时会报告错误,如PathTooLongException
必须绝对避免使用路径,因为它们会导致与某些应用程序不兼容
在这种情况下应该使用什么库/代码
它必须是开源的C#。“”(文章+代码)
根据非开源的代码项目开放许可证(CPOL)授权
只有两次提交并不意味着一个非常活跃的项目…
自185版(2013年2月19日)以来,该库已包含在源代码文件的标题中
看起来很有希望,但作者反对在企业环境中使用它,因为代码不够可靠
此库有一些,但缺少文档。您可以尝试。但请注意,如果您开始与默认的.NET I/O方法混淆,则并非所有方法都能起作用。您可以尝试使用此答案中概述的相对路径,使用以下方法拆分路径:
Directory.SetCurrentDirectory()
允许您使用非常长的路径(使用“\?\”样式)并模仿System.IO名称空间
您可能可以像使用System.IO一样使用此库。例如,AlphaFS.Win32.Filesystem.File.Copy()而不是System.IO.File.Copy()
()嗯,这不是一个真正的“项目”,它只是告诉你用一个PInvoke调用
CreateFileW
并在你路径名的开头使用\\?\。
我把它拿回来,我查看了源代码,他确实做了一些工作。我不会担心“不太活跃”的部分。你只是用一些辅助函数来包装Windows API,一旦你消除了bug,就没有什么可以做的了。我刚刚注意到你做了“发布你自己的答案”功能。我愿意跟你打赌,你会在哪里敲打你的头一段时间来弄明白这一点,现在你想分享你是如何解决这一问题的,这样其他人就不必受苦了。这是推荐的解决方案+我以前广泛使用过。我记得在最初发布的时候有一个bug,但是它是开源的,我确信它已经被正式修复了。+1太棒了!许可证是微软公共许可证(MSPL),它是开源的,尽管不幸的是它与GNU-GPL不兼容:有趣。。。也许有一个库可以自动为我实现这个技巧?我不能推荐这个库。基本功能,如File.Open
不起作用(处理它返回的流句柄并忽略访问
/共享
参数),文件枚举会自动忽略错误。