ExtractToDirectory给出“错误:指定的路径,文件名或两者都太长。”

时间:2016-12-26 22:11:38

标签: c# unzip zipfile

我正在尝试解压缩zip文件:

public string unzip(string zipFilePath, string destinationFolder)
{
    try
    {
        ZipFile.ExtractToDirectory(zipFilePath, destinationFolder);
        return destinationFolder;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

当我传递zipFilePath的以下值时:

t:\aaaaaaa aaaaaaaaaa aaaaaaaa\aaaa aaaaaa\aaaa aaaaaaaaaa aaaaaa\aaaa aaaaaa aaa.a aaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.zip

destinationFolder

C:\Users\A312\Documents\Visual Studio 2013\Projects\PDFConverterTester\PDFConverterTester_BatchGUI\bin\Debug\tempZip\466-qqqqqqqqq qqqqqqqq qqqqqq qqqq qqqqq qqqqqqqqqqq

抛出此异常:

  

指定的路径,文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名必须少于248个字符。

当我使用PKZip将其解压缩到destinationFolder时,没有问题。

但是zip文件中有一个文件,解压缩时,它有一个261个字符的完整路径。

知道怎么处理这个吗?

更新:我公司的IT政策不允许我安装任何新软件,所以我试图弄清楚如何使用我现有的Visual Studio .NET 4.5安装中的Windows API调用来解决这个问题。

2 个答案:

答案 0 :(得分:1)

尝试将\\?\前缀添加到完整路径以避开260/248字符限制:

\\?\t:\aaaaaaa aaaaaaaaaa aaaaaaaa\aaaa aaaaaa\aaaa aaaaaaaaaa aaaaaa\aaaa aaaaaa aaa.a aaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.zip

可在此处找到更多信息:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

您还应该谨慎使用此功能,因为它会禁用Windows'检查文件系统中的有效文件名。

答案 1 :(得分:0)

我最终使用7zip,而不是this answer,因为它没有字符限制。