Archiefbestanden extraheren in C# en .NET

Pak ZIP en andere archiefformaten programmatisch uit in .NET-applicaties.

Archiefextractie in .NET

Aspose.ZIP for .NET is een beheerde bibliotheek voor het openen van archieven en het extraheren van inhoud in C#-applicaties. De API’s laten u archiefitems lezen, alle of geselecteerde items extraheren, directorystructuren behouden en uitvoer naar een map of stream schrijven. De verwerking blijft binnen de applicatie, zodat serverworkflows niet afhankelijk zijn van desktopsoftware of command-line tools.

Typische toepassingen zijn documentinname, back-upherstel, deploymentpakketten, uploadverwerking en geautomatiseerde gegevensuitwisseling. Dezelfde API kan worden gebruikt in ASP.NET-services, background workers, desktopapplicaties, cloudtaken en CI/CD-pijplijnen.

De workflow verschilt per formaat. ZIP, 7Z, RAR, TAR en CAB gebruiken verschillende containerstructuren, compressiemethoden en API-klassen. Dit overzicht beschrijft het gemeenschappelijke extractieproces; formaatspecifieke gidsen geven daarna de juiste klasse, opties en beperkingen voor elk archieftype.

Wat is een archiefextractor?

Een archiefextractor opent een container die één of meer bestanden bevat en herstelt de opgeslagen inhoud. Het proces leest meestal metadata, identificeert items en directories, decomprimeert data en schrijft het resultaat naar een goedgekeurde locatie. Versleutelde archieven vereisen ook geldige referenties en instellingen die door het formaat worden ondersteund.

De termen extract, unpack en decompress worden vaak voor vergelijkbare bewerkingen gebruikt. Wanneer ontwikkelaars ZIP-bestanden willen uitpakken, bedoelen ze het herstellen van inhoud uit een ZIP-container. Archiefextractie is breder en omvat ook formaten zoals 7Z, RAR, TAR, CAB, CPIO en XZ.

In productie is extractie meer dan één methodeaanroep. Applicaties moeten mogelijk itemnamen inspecteren, afzonderlijke items selecteren, mappen behouden, streams accepteren, wachtwoorden verwerken, fouten rapporteren en limieten afdwingen voordat iets naar permanente opslag wordt geschreven.

Hoe archiefextractie werkt

Een typische C#-workflow bestaat uit zeven stappen:

  1. Ontvang een archief via een lokaal pad, upload, stream of opslagservice.
  2. Controleer of de applicatie het formaat ondersteunt.
  3. Open de container met de API-klasse die voor dat formaat is bedoeld.
  4. Inspecteer items wanneer filtering of selectieve extractie nodig is.
  5. Valideer uitvoerpaden en resourcelimieten voordat bestanden worden geschreven.
  6. Extraheer goedgekeurde items naar een geïsoleerde bestemming.
  7. Geef de uitvoer door aan de volgende stap en verwijder tijdelijke data.

De openingsklasse hangt af van het invoertype, omdat ZIP, 7Z, RAR, TAR en CAB geen identiek intern model delen. Een service kan toch één applicatieworkflow aanbieden en elke container naar de juiste Aspose.ZIP API routeren.

Archiefformaten beschikbaar voor extractie

De bibliotheek werkt met populaire archief- en compressieformaten, waaronder ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB en WIM. Beschikbare bewerkingen verschillen: sommige formaten bevatten meerdere items, terwijl andere één gecomprimeerde stream of een TAR-container met extra compressielaag vertegenwoordigen.

Kies de handler die past bij de echte container, niet alleen bij de bestandsnaamextensie. Controleer per formaat of de vereiste bewerking, versleuteling en streamgedrag worden ondersteund voordat u het aan een automatische pijplijn toevoegt.

Veelvoorkomende workflows voor bestandsextractie

Het volledige archief uitpakken. Gebruik volledige extractie wanneer alle items nodig zijn en de invoer is gevalideerd. Behoud de oorspronkelijke directoryhiërarchie wanneer dat nodig is en geef elke taak een unieke bestemming om overschrijven of gemengde uitvoer te voorkomen.

Alleen geselecteerde items lezen. Doorloop Archive.Entries en pas applicatieregels toe voordat data wordt geschreven. Dit is handig wanneer een pakket veel assets bevat, maar de workflow alleen een document, manifest, configuratiebestand of bekende map nodig heeft.

Een stream verwerken. Streamgebaseerde invoer past bij ASP.NET-uploads, object storage, databases en berichtsystemen. Maak eigendom en levensduur van streams expliciet en buffer geen onbeperkt archief volledig in geheugen.

Beschermde inhoud openen. Geef referenties door via de decryptie-instellingen van het betreffende formaat. Wachtwoorden moeten uit beveiligde configuratie of een secret store komen en mogen nooit in logs terechtkomen.

Grote invoer als begrensde taak behandelen. Beperk gecomprimeerde grootte, uitgepakte grootte, aantal items, verwerkingstijd en tijdelijk opslaggebruik. Definieer deze limieten in de applicatie in plaats van vertrouwen af te leiden uit de extensie.

Aspose.ZIP toevoegen aan een C#-project

Installeer het Aspose.ZIP NuGet-pakket in een C#-project dat een ondersteunde .NET-omgeving op Windows, Linux of macOS target. Verwijs daarna naar de benodigde namespace en selecteer de klasse die bij de invoercontainer hoort. Het proces vereist ook leestoegang tot de bron, schrijftoegang tot de bestemming en voldoende tijdelijke opslag voor de ingestelde expansielimiet.

Gebruik de volgende Package Manager Console-opdracht:

Package Manager Console

PM> Install-Package Aspose.Zip

C#-voorbeeld: een ZIP-bestand uitpakken

ZIP geeft een compact voorbeeld van de gedeelde workflow. De code opent de invoer en schrijft de inhoud naar een doeldirectory. Valideer container, uitvoerpaden en resourcelimieten voordat u dit patroon met externe bestanden gebruikt.

ZIP-inhoud naar een directory extraheren

using Aspose.Zip;
using System.IO;

string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");

Directory.CreateDirectory(outputDirectory);

using (var archive = new Archive(archivePath))
{
    archive.ExtractToDirectory(outputDirectory);
}

Veilige archiefextractie in productie

Behandel archieven van gebruikers of externe systemen als niet-vertrouwde invoer. Een verwachte extensie bewijst niet dat de container geldig of veilig is. Controleer of de gekozen handler de data kan lezen en wijs beschadigde of niet-ondersteunde invoer af.

Los vóór het schrijven van een item het uitvoerpad op ten opzichte van de goedgekeurde bestemming. Weiger absolute paden, traversal naar bovenliggende directories en elk resultaat buiten die directory. Zo kunnen bestandsnamen uit het archief geen schrijfacties naar andere locaties sturen.

Stel limieten in voor gecomprimeerde grootte, totale en itemgewijze uitgepakte grootte, aantal items, nestingdiepte, uitvoeringstijd en concurrency. Gebruik een taakspecifieke tijdelijke map met beperkte rechten, promoot alleen gevalideerde uitvoer en ruim op na succesvolle én mislukte bewerkingen.

Logs horen operatie-ID’s en statusinformatie te bevatten, geen wachtwoorden, private bestandsnamen of geëxtraheerde inhoud. Als de uitvoer later wordt geparsed, bekeken of gescand, behandel elke volgende component als een aparte vertrouwensgrens.

Extractie in de browser proberen

Met de gratis online extractie-app kunt u voorbeeldinvoer testen zonder software te installeren. Dat is handig om de verwachte uitvoer te controleren voordat u de workflow in C# implementeert.

De online tool is bedoeld voor interactieve taken. De .NET-bibliotheek is bedoeld voor herhaalbare services, achtergrondverwerking, opslagpijplijnen en enterprise-applicaties waarin validatie en uitvoerafhandeling onder controle van de applicatie blijven.

Extractiegidsen per bestandstype

Implementatiedetails veranderen per container en opgeslagen formaat. Een formaatspecifieke gids hoort te beschrijven:

  • de juiste Aspose.ZIP-klasse om het archief te openen;
  • voorbeelden voor volledige en selectieve extractie;
  • gedrag rond wachtwoorden en versleuteling;
  • streamgebaseerde verwerking waar van toepassing;
  • formaatspecifieke beperkingen en productieoverwegingen;
  • relevante API-referentie en documentatie.

Gebruik de gids voor het echte invoertype wanneer u van dit overzicht naar implementatie gaat. Zo voorkomt u dat ZIP-aannames worden toegepast op 7Z, RAR, TAR, CAB of streamcompressieformaten met ander gedrag.

Archiefextractiegidsen per Bestandsformaat

Bekijk C#-extractiepagina's voor bestanden en assets die vaak in ZIP-archieven worden opgeslagen.

Bronnen voor archiefextractie

FAQ over archiefextractie

1. Hoe extraheer ik archiefbestanden in C#?

Installeer Aspose.ZIP, open de invoer met de klasse die bij het formaat past en extraheer de hele container of geselecteerde items naar een goedgekeurde directory of stream.

2. Hoe kan ik bestanden uit een ZIP-archief extraheren?

Maak een Archive-instantie voor de ZIP-invoer en roep ExtractToDirectory aan om alles uit te pakken. Doorloop Archive.Entries wanneer de applicatie alleen specifieke items moet inspecteren of opslaan.

3. Is een archief extraheren hetzelfde als ZIP-bestanden uitpakken?

ZIP uitpakken geldt specifiek voor ZIP-bestanden. Extractie is breder en omvat ook formaten zoals 7Z, RAR, TAR, CAB, CPIO en WIM.

4. Kunnen .NET-applicaties met wachtwoord beveiligde archieven openen?

Aspose.ZIP ondersteunt wachtwoordtoegang voor toepasselijke formaten wanneer geldige referenties en passende decryptie-instellingen worden geleverd. Het exacte gedrag hangt af van het containertype.

5. Hoe extraheer ik geüploade archieven veilig?

Gebruik geïsoleerde tijdelijke opslag, valideer elk uitvoerpad, beperk toegestane formaten en gecomprimeerde/uitgepakte groottes, stel een verwerkingstimeout in en verwijder tijdelijke data na afloop.