7z-muoto on suosittu valinta korkean vertailun kompressiolle ja jakelulle. Aspose.ZIP for .NET avulla voit luoda 7Z-tiedostoja ohjelmattisesti yksinkertaisen, nykyaikaisen API: n avulla. Tämä opas kulkee minimaalisen työn esimerkin läpi ja lisää käytännön malleja todellisille projekteille, kuten tiedostojen lisääminen levystä, tiedon virtaaminen muistiinpanosta, sisäänkäyntien nimet ja tiedostot arkiston sisällä ja perusvirheen käsittely.
Kaikki koodin näytteet ovat inline ja itsekohtaisia.
edellytykset
- .NET 6 tai uudempi
- NuGet paketti
Aspose.Zip
dotnet add package Aspose.Zip
Näytteissä käytetyt nimikkeet:Aspose.Zip
, Aspose.Zip.SevenZip
Nopea käynnistys: luo 7z arkisto muutaman tiedoston kanssa
Tämä vähäinen esimerkki luo uuden 7z-arkiston muistiin, lisää kaksi kirjoitusta ja tallentaa sen levylle.
// File: Program.cs
using System;
using System.IO;
using System.Text;
using Aspose.Zip.SevenZip;
class Program
{
static void Main()
{
var outputPath = "example.7z";
using (var archive = new SevenZipArchive())
{
// Add a text file from memory
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("Hello 7z from Aspose.ZIP")))
{
archive.CreateEntry("docs/readme.txt", ms);
}
// Add a file from disk
var sourceFile = "report.pdf"; // ensure this file exists
if (File.Exists(sourceFile))
{
using var fs = File.OpenRead(sourceFile);
archive.CreateEntry("reports/2025/report.pdf", fs);
}
// Save the 7z archive
using var outStream = File.Create(outputPath);
archive.Save(outStream);
}
Console.WriteLine("Saved 7z: " + Path.GetFullPath(outputPath));
}
}
- Mitä pitää huomata*
SevenZipArchive
alkaa tyhjä, sitten soitatCreateEntry(entryName, stream)
kohdan mukaan.- Sisällön nimet määrittelevät tiedostokohdan rakenteen arkiston sisällä, kuten
docs/readme.txt
. - Voit lukea mitä tahansa
Stream
, joka on hyödyllinen tietoihin, joita luot muistiin.
Lisää koko laatikon puu
Käynnistä rekisteri uudelleen, säilytä sen suhteellinen rakenne arkiston sisällä, ja tallentaa .7z
.
using System;
using System.IO;
using Aspose.Zip.SevenZip;
static class FolderTo7z
{
public static void CreateFromFolder(string sourceDir, string output7z)
{
if (!Directory.Exists(sourceDir))
throw new DirectoryNotFoundException(sourceDir);
using var archive = new SevenZipArchive();
var basePath = Path.GetFullPath(sourceDir);
foreach (var filePath in Directory.GetFiles(basePath, "*", SearchOption.AllDirectories))
{
var relPath = Path.GetRelativePath(basePath, filePath)
.Replace(Path.DirectorySeparatorChar, '/'); // normalize to forward slashes
using var fs = File.OpenRead(filePath);
archive.CreateEntry(relPath, fs);
}
using var outStream = File.Create(output7z);
archive.Save(outStream);
}
}
// Usage
// FolderTo7z.CreateFromFolder(@"C:\data\input", "bundle.7z");
- Vinkkejä *
- Käytä
Path.GetRelativePath
Pidä sisäinen laatikko puhtaana. - Normalisoida reitin eristäjät edetä hyppyjä johdonmukaisten arkisto-osoitteiden.
Suorita suuria tiedostoja turvallisesti
Kun lisät suuria tiedostoja, virtaa ne sen sijaan, että buffering koko tiedoston muisti. File.OpenRead
jo virtaa.Jos luot sisältöä lentokoneella, kirjoita se Stream
ja siirtää tämä virta suoraan CreateEntry
.
using System.IO;
using System.Text;
using Aspose.Zip.SevenZip;
static void AddGeneratedCsv(SevenZipArchive archive, string entryName)
{
// Example generator that writes CSV rows in a forward-only fashion
using var pipe = new MemoryStream();
using var writer = new StreamWriter(pipe, Encoding.UTF8, leaveOpen: true);
writer.WriteLine("id,name");
for (int i = 1; i <= 1000; i++)
writer.WriteLine($"{i},Item {i}");
writer.Flush();
pipe.Position = 0;
archive.CreateEntry(entryName, pipe);
}
Järjestä sisäänkäynti apulaisen kanssa
Suuremmat työpaikat, käytä pieni avustaja lisätä tiedostoja yhteinen etu. Tämä pitää arkiston rakenne ennustettavissa.
using System.IO;
using Aspose.Zip.SevenZip;
static class SevenZipHelpers
{
public static void AddFile(SevenZipArchive archive, string rootPrefix, string fullPath)
{
var relName = Path.Combine(rootPrefix, Path.GetFileName(fullPath))
.Replace(Path.DirectorySeparatorChar, '/');
using var fs = File.OpenRead(fullPath);
archive.CreateEntry(relName, fs);
}
}
Lopullinen esimerkki logging ja perus tarkastukset
Tämä esimerkki luo 7z arkiston sekoitetusta lähteiden luettelosta. se vahvistaa polkuja ja arkistot tuloksia.
// File: BuildArchive.cs
using System;
using System.Collections.Generic;
using System.IO;
using Aspose.Zip.SevenZip;
public static class BuildArchive
{
public static bool Run(IEnumerable<string> paths, string output7z)
{
if (paths == null) throw new ArgumentNullException(nameof(paths));
Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(output7z)) ?? ".");
int added = 0, skipped = 0;
using var archive = new SevenZipArchive();
foreach (var p in paths)
{
if (string.IsNullOrWhiteSpace(p)) { skipped++; continue; }
if (File.Exists(p))
{
using var fs = File.OpenRead(p);
var entryName = Path.GetFileName(p);
archive.CreateEntry(entryName, fs);
Console.WriteLine("Added file: " + entryName);
added++;
}
else if (Directory.Exists(p))
{
var basePath = Path.GetFullPath(p);
foreach (var fp in Directory.GetFiles(basePath, "*", SearchOption.AllDirectories))
{
var rel = Path.GetRelativePath(basePath, fp).Replace(Path.DirectorySeparatorChar, '/');
using var fs = File.OpenRead(fp);
archive.CreateEntry(rel, fs);
Console.WriteLine("Added: " + rel);
added++;
}
}
else
{
Console.WriteLine("Skip missing: " + p);
skipped++;
}
}
using var outStream = File.Create(output7z);
archive.Save(outStream);
Console.WriteLine($"Saved: {Path.GetFullPath(output7z)}");
Console.WriteLine($"Entries added: {added}, skipped: {skipped}");
return added > 0;
}
}
// Usage sample:
// BuildArchive.Run(new [] { "README.md", "assets", "docs/spec.pdf" }, "release.7z");
Parhaat käytännöt
** Käytä etukäteen laskuja sisäänkirjautumisten nimille**Monet työkalut näyttävät reittejä johdonmukaisemmin, kun kirjoituksia käytetään
/
Niin kuin erottaja.- Käytettävissä virrat*Valitse aina tiedostojen virtaukset
using
Korkeat näytteet takaavat puhtaan käytön.
- Käytettävissä virrat*Valitse aina tiedostojen virtaukset
- Hyväksyttävä sisäänpääsy*Tarkista, että tiedostot ovat olemassa ennen niiden lisäämistä. Tarjoa selkeät arkistot kaatuneille reiteille.
- Pidä arkiston rakenne puhtaana*Valitse arkiston sisällä oleva root-laatikon nimi ja liity siihen, kuten
app/
taipackage/
.
- Pidä arkiston rakenne puhtaana*Valitse arkiston sisällä oleva root-laatikon nimi ja liity siihen, kuten
**Testit kohdistuvilla alustoilla*Varmista, että 7z avautuu oikein työkaluissa käyttäjät luottavat.
Yhteenveto
Olet luonut 7z-arkiston ohjelmattisesti Aspose.ZIP for .NET, lisännyt tiedostoja levystä ja muistiin, säilyttänyt puhtaan tiedoston rakenteen ja tallentanut tuloksen .7z
Käytä näitä malleja pakettien julkaisuihin, paketteihin ja vientiin suoraan C#-sovelluksistasi.