C# - FileStream / Stream - PathTooLongException - Zeta长路径

时间:2017-08-28 12:55:17

标签: c# .net

我正在创建一个将解析压缩文件的Windows窗体应用程序。我得到了一个例外

  调试文件时出现

System.IO.PathTooLongException   被解析和提取的名称超过259   字符。这里提到的一个关于Zeta Long Paths的帖子。

我已经通过Nuget包下载并在我的项目中使用它。

ZlpIOHelper可用于执行文件处理功能。

我通过对象资源管理器浏览了参考资料,无法确定如何使用Zeta长路径创建FileSteam。

FileStream fs = File.OpenRead(archiveFilenameIn);

Stream inStream = File.OpenRead(gzArchiveName);
Stream gzipStream = new GZipInputStream(inStream);

如何使用Zeta长路径实现上述功能?还是其他任何套餐?

不是重复的问题。 .NET版本是4.0并且特定于长路径包。

1 个答案:

答案 0 :(得分:0)

通过 Zeta长路径创建FileStream不是自动的,但是可以的。

您必须首先获取/创建文件的 SafeFileHandle 。我还没有在 read 场景中进行过测试,但是这里有一个示例,说明如何在深度嵌套的路径上将一些Stream数据写入到您自己的FileStream中:

using (var fileHandle = ZlpIOHelper.CreateFileHandle(very_long_outputPath, ZetaLongPaths.Native.CreationDisposition.CreateAlways, ZetaLongPaths.Native.FileAccess.GenericAll, ZetaLongPaths.Native.FileShare.Read))
{
    using (FileStream streamWriter = new System.IO.FileStream(fileHandle, System.IO.FileAccess.Write))
    {
       //Your code logic here
    }
}