refactor(pep-lib): replace DotNetZip with System.IO.Compression and refactor readers

- Remove DotNetZip package from PepLib.Core.csproj
- Update DrawingReader, NestReader, and ZipHelper to use System.IO.Compression.ZipArchive
- Simplify stream handling and improve resource disposal
- Keep behavior consistent for loop/plate detection and extraction
This commit is contained in:
2025-10-29 11:03:56 -04:00
parent 2f56a542a8
commit 61866df17e
4 changed files with 77 additions and 140 deletions

View File

@@ -1,7 +1,7 @@
using Ionic.Zip;
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Text.RegularExpressions;
namespace PepLib.IO
@@ -22,48 +22,32 @@ namespace PepLib.IO
public void Read(Stream stream)
{
var zipStream = new ZipInputStream(stream);
ZipEntry theEntry;
while ((theEntry = zipStream.GetNextEntry()) != null)
using (var zip = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: true))
{
var size = 2048;
var data = new byte[size];
var memstream = new MemoryStream();
while (true)
foreach (var entry in zip.Entries)
{
size = zipStream.Read(data, 0, data.Length);
using var entryStream = entry.Open();
var memstream = new MemoryStream();
entryStream.CopyTo(memstream);
memstream.Seek(0, SeekOrigin.Begin);
if (size > 0)
var extension = Path.GetExtension(entry.FullName);
switch (extension)
{
memstream.Write(data, 0, size);
memstream.Flush();
case ".dir":
LoadInfo(memstream);
memstream.Close();
continue;
}
else break;
if (Regex.IsMatch(extension, "loop-\\d\\d\\d"))
Drawing.Loops.Add(ReadLoop(entry.FullName, memstream));
memstream.Close();
}
memstream.Seek(0, SeekOrigin.Begin);
var extension = Path.GetExtension(theEntry.FileName);
switch (extension)
{
case ".dir":
LoadInfo(memstream);
memstream.Close();
continue;
}
if (Regex.IsMatch(extension, "loop-\\d\\d\\d"))
Drawing.Loops.Add(ReadLoop(theEntry.FileName, memstream));
memstream.Close();
}
zipStream.Close();
Drawing.ResolveLoops();
}
@@ -111,3 +95,4 @@ namespace PepLib.IO
}
}
}