我正在尝试解压缩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调用来解决这个问题。
答案 0 :(得分:1)
尝试将\\?\
前缀添加到完整路径以避开260/248字符限制:
\\?\t:\aaaaaaa aaaaaaaaaa aaaaaaaa\aaaa aaaaaa\aaaa aaaaaaaaaa aaaaaa\aaaa aaaaaa aaa.a aaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.zip
您还应该谨慎使用此功能,因为它会禁用Windows'检查文件系统中的有效文件名。
答案 1 :(得分:0)
我最终使用7zip,而不是this answer,因为它没有字符限制。