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:
@@ -1,8 +1,8 @@
|
||||
using Ionic.Zip;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@@ -32,57 +32,41 @@ namespace PepLib.IO
|
||||
const string plateExtensionPattern = "plate-\\d\\d\\d";
|
||||
const string loopExtensionPattern = "loop-\\d\\d\\d";
|
||||
|
||||
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 ".report":
|
||||
LoadReport(memstream);
|
||||
memstream.Close();
|
||||
continue;
|
||||
|
||||
case ".dwg-info":
|
||||
LoadDrawingInfo(memstream);
|
||||
memstream.Close();
|
||||
continue;
|
||||
|
||||
default:
|
||||
Debug.WriteLine("Unknown file: " + entry.FullName);
|
||||
break;
|
||||
}
|
||||
else break;
|
||||
|
||||
if (Regex.IsMatch(extension, loopExtensionPattern))
|
||||
loops.Add(entry.FullName, memstream);
|
||||
else if (Regex.IsMatch(extension, plateExtensionPattern))
|
||||
plates.Add(entry.FullName, memstream);
|
||||
}
|
||||
|
||||
memstream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
var extension = Path.GetExtension(theEntry.FileName);
|
||||
|
||||
switch (extension)
|
||||
{
|
||||
case ".report":
|
||||
LoadReport(memstream);
|
||||
memstream.Close();
|
||||
continue;
|
||||
|
||||
case ".dwg-info":
|
||||
LoadDrawingInfo(memstream);
|
||||
memstream.Close();
|
||||
continue;
|
||||
|
||||
default:
|
||||
Debug.WriteLine("Unknown file: " + theEntry.FileName);
|
||||
break;
|
||||
}
|
||||
|
||||
if (Regex.IsMatch(extension, loopExtensionPattern))
|
||||
loops.Add(theEntry.FileName, memstream);
|
||||
else if (Regex.IsMatch(extension, plateExtensionPattern))
|
||||
plates.Add(theEntry.FileName, memstream);
|
||||
}
|
||||
|
||||
zipStream.Close();
|
||||
|
||||
foreach (var loop in loops)
|
||||
Nest.Loops.Add(ReadLoop(loop.Key, loop.Value));
|
||||
|
||||
@@ -163,3 +147,4 @@ namespace PepLib.IO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user