Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持长路径的C#I/O库(用于解决PathTooLongException)_C#_Winapi_Io_Pathtoolongexception - Fatal编程技术网

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

支持长路径的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#。“”

My open source将远程文件夹同步到本地桌面。远程文件夹可以位于露天,路径长度没有限制(
/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
不起作用(处理它返回的流句柄并忽略
访问
/
共享
参数),文件枚举会自动忽略错误。