A 7z formátum népszerű választás a nagy arányú tömörítés és elosztás. Aspose.ZIP a .NET, akkor hozzon létre 7Z archívumok programozottan egy egyszerű, modern API. Ez az útmutató megy keresztül egy minimális munka példája, és hozzá gyakorlati minták valós projektek, mint például a fájlok hozzáadása a lemezről, streaming adatokat a memóriából, ellenőrzése a bejárati nevek és mappák belül az archivum, valamint az alapvető hiba kezelése.
Az összes kódminták inline és öntartalmúak.
előfeltételek
- .NET 6 vagy újabb
- NuGet csomag
Aspose.Zip
dotnet add package Aspose.Zip
A mintákban használt nevek:Aspose.Zip
, Aspose.Zip.SevenZip
Gyors indítás: hozzon létre egy 7z archívum néhány fájl
Ez a minimális példa létrehoz egy új 7z archívumot a memóriában, két bejegyzést ad hozzá, és mentse a lemezre.
// 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 kell észrevenni*
SevenZipArchive
üresen kezdődik, majd hívjaCreateEntry(entryName, stream)
Az elem szerint.- A bejegyzésnevek meghatározzák a mappák szerkezetét az archívumon belül, mint például
docs/readme.txt
. - Lehet olvasni bármilyen
Stream
, ami hasznos az adatokhoz, amelyeket a memóriában generál.
Hozzon egy egész fájlfát
Folytassa újra a címkéket, megőrizze relatív szerkezetét az archívumon belül, és mentse a .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");
- tippek *
- Használat
Path.GetRelativePath
hogy a belső mappák elrendezése tiszta legyen. - Normalizálja az útválasztókat a következetes archív bejegyzésekhez.
Nagy fájlok biztonságos áramlása
Ha nagy fájlokat ad hozzá, áthelyezze őket, ahelyett, hogy az egész adatot a memóriába helyezi. File.OpenRead
már áramlások. ha tartalmat generál a repülőtéren, írja be a Stream
és közvetlenül átadja ezt az áramot a 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);
}
Jelentkezzen be egy segítővel
A nagyobb munkákhoz használjon egy kis segédprogramot, hogy hozzáadja a fájlokat egy közös előfizetéssel. Ez megtartja az archívum szerkezetét előre láthatóvá.
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);
}
}
End-to-end példa logging és alapellenőrzésekkel
Ez a példa egy 7z archívumot hoz létre a források összegyűjtött listájáról. megerősíti az útvonalakat és a naplók eredményeit.
// 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");
A legjobb gyakorlatok
Forrás használata a bejárati nevekhezSok eszköz következetesen megjeleníti az utakat, amikor a bejegyzéseket használják
/
mint a szétválasztó.- Áramszünetek rendelkezésre állása*Mindig rögzítse a fájl áramlását
using
A fenti minták biztosítják a tiszta eltávolítást.
- Áramszünetek rendelkezésre állása*Mindig rögzítse a fájl áramlását
- Validált bejegyzések *Ellenőrizze, hogy a fájlok léteznek, mielőtt hozzáadná őket. Biztosítson egyértelmű naplókat a kihagyott útvonalakhoz.
- Az archív szerkezet tisztán tartása*Válasszon egy root mappa nevét az archívumon belül, és ragaszkodjon hozzá, mint például
app/
vagypackage/
.
- Az archív szerkezet tisztán tartása*Válasszon egy root mappa nevét az archívumon belül, és ragaszkodjon hozzá, mint például
Tesztek a cél platformokonGyőződjön meg róla, hogy a 7z megfelelően megnyitja az eszközöket, amelyekre a felhasználók támaszkodnak.
Összefoglaló
Programozottan létrehozott egy 7z archívumot Aspose.ZIP for .NET, hozzáadta a fájlokat a lemezről és a memóriáról, megőrizte a tiszta mappaképet, és mentette az eredményt a .7z
Használja ezeket a mintákat a csomag kiadványok, csomagok és exportok közvetlenül a C# alkalmazások.
More in this category
- Hozzon létre ZIP-t a memóriában C# és Aspose.ZIP segítségével
- Hozzon létre egy sima ZIP archívumot a C#-ban Kivonat Nested ZIP-k Hatékonyan
- 7z (7-Zip) Archívumok létrehozása C# .NET használatával programozva
- 7z Fájlok kivonása C# A nyílt jelszó védelme 7zip Archívumok
- Fájlok vagy mappák hozzáadása a ZIP archívumokhoz programozottan C#