Tôi đang sử dụng SharpZipLib để giải nén tệp. Mã của tôi đã được làm việc độc đáo cho tất cả zipfiles trừ file zip gì tôi đang giải nén bây giờ ...SharpZipLib - ZipException "System.ArgumentOutOfRangeException" - Tại sao tôi nhận được ngoại lệ này?
Got ngoại lệ này:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: length
Trường hợp ngoại lệ được ném vào size = s.Read(data, 0, data.Length);
Hereb là của tôi mã ...
public static void UnzipFile(string sourcePath, string targetDirectory)
{
try
{
using (ZipInputStream s = new ZipInputStream(File.OpenRead(sourcePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
//string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (targetDirectory.Length > 0)
{
Directory.CreateDirectory(targetDirectory);
}
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(targetDirectory + fileName))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
}
catch (Exception ex)
{
throw new Exception("Error unzipping file \"" + sourcePath + "\"", ex);
}
}
Tôi vừa thử ví dụ của bạn và làm việc tốt cho tôi. Sự cố với gói zip hoặc với phiên bản thư viện. Tôi đã sử dụng 'v1.1.4322' –
@Andrey: Không có phiên bản SharpZipLib như vậy - phiên bản mới nhất là 0,86. Tôi nghĩ bạn đang bối rối với số phiên bản dài hơn cho .NET 1.1. –
Ah, phải, nó là giá trị thuộc tính phiên bản thời gian chạy. Lấy làm tiếc. Thư viện có phiên bản 0.84 –