3DS-Dateien aus ZIP in .NET extrahieren
Verwenden Sie Aspose.ZIP for .NET, um ein ZIP-Archiv zu prüfen und nur die 3DS-Dateien wiederherzustellen, die Ihre C#-Anwendung benötigt. Auf dieser Seite bedeutet Extraktion, passende Dateien aus einem ZIP-Container auszuwählen und in ein kontrolliertes Zielverzeichnis zu schreiben. Aspose.ZIP interpretiert oder konvertiert den internen Inhalt der Datei dabei nicht.
Selektive Extraktion eignet sich für 3D-Asset-Importe, Modellprüfungen, Visualisierungspipelines und automatisierte Verarbeitung von Projektpaketen. Die Anwendung kann nicht relevante Einträge überspringen, Ausgabe- und Ressourcenregeln durchsetzen und freigegebene Dateien an den nächsten Dienst übergeben, ohne das vollständige Archiv zu entpacken.
3DS-Dateien aus ZIP mit C# extrahieren
Installieren Sie das
Aspose.ZIP-Paket for .NET
und importieren Sie den Namespace Aspose.Zip. Archivmetadaten stehen bereits vor dem Schreiben zur Verfügung. So kann die Anwendung ArchiveEntry.Name, ArchiveEntry.IsDirectory und ArchiveEntry.UncompressedSize als Teil ihrer Annahmeregeln auswerten.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Öffnen Sie die ZIP-Datei mit Archive, durchlaufen Sie Archive.Entries, wählen Sie Einträge mit der Erweiterung .3ds aus und rufen Sie ArchiveEntry.Extract für jedes freigegebene Ziel auf. Das Beispiel reduziert archivierte Pfade auf den endgültigen Dateinamen, damit Einträge das Zielverzeichnis nicht verlassen können.
Schritte zum Wiederherstellen von 3DS-Dateien in C#
- Den Quellpfad der ZIP-Datei auflösen und ein isoliertes Ausgabeverzeichnis erstellen.
- Das Paket mit der Klasse
Archiveöffnen. Archive.Entriesdurchlaufen, statt jeden Eintrag zu entpacken.- Einträge auswählen, deren endgültiger Dateiname die Erweiterung .3ds verwendet.
- Einen Zielpfad erstellen, der unterhalb des freigegebenen Ausgabestamms bleibt.
- Einträge ablehnen, die das konfigurierte Limit für die entpackte Größe überschreiten.
- Jeden akzeptierten Eintrag mit
ArchiveEntry.Extractspeichern.
Systemanforderungen
Stellen Sie vor dem Ausführen des Beispiels sicher, dass die Umgebung Folgendes enthält:
- Eine unterstützte .NET-Laufzeit unter Windows, Linux oder macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code oder eine andere C#-Entwicklungsumgebung.
- Aspose.ZIP for .NET, installiert über NuGet oder als Assembly referenziert.
- Lesezugriff auf das Quellarchiv und Schreibzugriff auf das Zielverzeichnis.
- Speicher- und Ausführungslimits, die zu nicht vertrauenswürdigen komprimierten Eingaben passen.
C#-Beispiel: 3DS-Dateien in einem ZIP-Archiv auswählen
Der Code öffnet ein ZIP-Paket, filtert Nicht-Verzeichniseinträge nach der freigegebenen Erweiterung und schreibt passende Dateien in ein Ausgabeverzeichnis. Das Reduzieren archivierter Pfade hält das Beispiel kompakt und verhindert, dass übergeordnete Pfadsegmente das Ziel bestimmen. Produktionscode sollte außerdem eine deterministische Regel für doppelte Ausgabenamen festlegen.
3DS-Dateien aus ZIP extrahieren - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("models.zip");
string outputDirectory = Path.GetFullPath("extracted-3ds");
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
if (!string.Equals(
Path.GetExtension(fileName),
".3ds",
StringComparison.OrdinalIgnoreCase))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"Eintrag '{fileName}' überschreitet das Extraktionslimit von 100 MB.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Implementierungshinweise für 3DS-Pakete
Eine passende Erweiterung kennzeichnet nur eine mögliche Modelldatei. Geometrie, Materialien, Referenzen und Formatintegrität sollten von der 3D-Komponente geprüft werden, die die extrahierte Datei anschließend verarbeitet.Das Beispiel reduziert archivierte Pfade auf einfache Dateinamen. Wenn zwei akzeptierte Einträge denselben Endnamen haben, kann ArchiveEntry.Extract eine vorhandene Ausgabedatei überschreiben. Legen Sie deshalb eine eindeutige Kollisionsregel fest: Duplikate ablehnen, eindeutige Namen erzeugen oder eine validierte relative Ordnerstruktur beibehalten. Verwenden Sie für jeden Job ein eigenes Zielverzeichnis, damit parallele Anfragen keine Ergebnisse vermischen.
Sicherheits- und Datenschutzaspekte
Behandeln Sie Archivnamen und Nutzdaten als nicht vertrauenswürdig. Hängen Sie ArchiveEntry.Name niemals direkt an den Zielpfad an, da absolute Pfade und übergeordnete Verzeichnisse außerhalb des vorgesehenen Ordners schreiben könnten. Das Standardbeispiel verwendet Path.GetFileName; Workflows, die Ordner beibehalten, müssen den vollständigen Pfad auflösen und prüfen, dass er unterhalb des freigegebenen Stamms bleibt.
Setzen Sie Limits für die komprimierte Eingabegröße, die entpackte Größe pro Eintrag und insgesamt, die Anzahl der Einträge, die Verarbeitungszeit und parallele Jobs. Extrahieren Sie in eingeschränkten temporären Speicher, bereinigen Sie Teilausgaben nach Fehlern, scannen Sie Dateien bei Bedarf und vermeiden Sie das Protokollieren privater Dateinamen oder Dateiinhalte.
3DS-Extraktion FAQ
Wie extrahiere ich in C# nur 3DS-Dateien aus einem ZIP-Archiv?
Öffnen Sie die ZIP-Datei mit Archive, durchlaufen Sie Archive.Entries, filtern Sie passende Einträge nach der Erweiterung .3ds und rufen Sie Extract für jeden akzeptierten Zielpfad auf.
Validiert Aspose.ZIP den Inhalt einer extrahierten 3DS-Datei?
Nein. Die Erweiterung ist nur ein erster Filter. Validieren Sie die wiederhergestellte Datei mit einer Komponente, die 3DS-Inhalte versteht.
Kann dasselbe Auswahlmuster mit 7Z-, RAR- oder TAR-Containern verwendet werden?
Ja, aber jeder Container muss mit der passenden Aspose.ZIP-Archivklasse geöffnet werden. Eintragstypen und verfügbare Extraktionsmethoden können je nach Archivformat unterschiedlich sein.
Wie sollten doppelte 3DS-Dateinamen behandelt werden?
Legen Sie die Regel vor der Extraktion fest: Duplikate ablehnen, eindeutige Namen erzeugen oder eine validierte relative Ordnerstruktur beibehalten.
Verwandte Anleitungen zur Extraktion von 3D-Dateien
Durchsuchen Sie C#-Anleitungen für weitere 3D- und Engineering-Assets, die häufig in ZIP-Paketen bereitgestellt werden.