Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Documentation Search all OfficeIMO/
Class

ZipArchiveWriter

OfficeIMO.Archives

Namespace
OfficeIMO.Archives
Assembly
OfficeIMO.Archives
Source revision
ac7e6e1bad8a with working tree changes
Implements
IDisposable
Modifiers
sealed

Writes ZIP archives (PKWARE APPNOTE 6.3.10) with stored or Deflate members, UTF-8 names and ZIP64 when sizes or offsets require it. With the default options the output depends only on the entries written: timestamps are fixed, attributes are constant, no varying extra fields are written and Deflate output is the same on every platform.

Inheritance

  • object
  • ZipArchiveWriter

Remarks

Each member is compressed into a staging buffer (memory, then a private temporary file above 8 MiB) so its local header carries exact sizes and checksums. The destination needs to be writable but not seekable. Member names pass the same path checks as extraction.

Constructors

public ZipArchiveWriter(Stream destination, ZipArchiveWriterOptions? options = null, bool leaveOpen = false) #

Starts an archive at the destination's current position.

Parameters

destination System.IO.Stream required
options OfficeIMO.Archives.ZipArchiveWriterOptions? = null optional
leaveOpen bool = false optional

Methods

public void Add(ArchiveWriteEntry entry, CancellationToken cancellationToken = default) #

Adds one described entry.

Parameters

entry OfficeIMO.Archives.ArchiveWriteEntry required
cancellationToken System.Threading.CancellationToken = default optional
public void AddDirectory(string path, DateTimeOffset? lastWriteTime = null) #

Adds an explicit directory member, written with a trailing '/'.

Parameters

path string required
lastWriteTime System.DateTimeOffset? = null optional
AddFile 2 overloads
public void AddFile(string path, Stream content, DateTimeOffset? lastWriteTime = null, ZipCompressionMethod? compression = null, CancellationToken cancellationToken = default) #

Adds one file member from the stream's current position to its end. The stream is left open.

Parameters

path string required
content System.IO.Stream required
lastWriteTime System.DateTimeOffset? = null optional
compression OfficeIMO.Archives.ZipCompressionMethod? = null optional
cancellationToken System.Threading.CancellationToken = default optional
public void AddFile(string path, byte[] content, DateTimeOffset? lastWriteTime = null, ZipCompressionMethod? compression = null) #

Adds one file member from memory.

Parameters

path string required
content byte[] required
lastWriteTime System.DateTimeOffset? = null optional
compression OfficeIMO.Archives.ZipCompressionMethod? = null optional
Create 2 overloads
public static void Create(Stream destination, IEnumerable<ArchiveWriteEntry> entries, ZipArchiveWriterOptions? options = null, CancellationToken cancellationToken = default) #

Writes the entries, in the given order, to a new ZIP stream.

Parameters

destination System.IO.Stream required
entries System.Collections.Generic.IEnumerable<OfficeIMO.Archives.ArchiveWriteEntry> required
options OfficeIMO.Archives.ZipArchiveWriterOptions? = null optional
cancellationToken System.Threading.CancellationToken = default optional
public static void Create(string destinationPath, IEnumerable<ArchiveWriteEntry> entries, ZipArchiveWriterOptions? options = null, CancellationToken cancellationToken = default) #

Writes the entries, in the given order, to a new ZIP file. An existing file is not overwritten.

Parameters

destinationPath string required
entries System.Collections.Generic.IEnumerable<OfficeIMO.Archives.ArchiveWriteEntry> required
options OfficeIMO.Archives.ZipArchiveWriterOptions? = null optional
cancellationToken System.Threading.CancellationToken = default optional
public Stream CreateEntry(string path, DateTimeOffset? lastWriteTime = null, ZipCompressionMethod? compression = null) #

Opens a write stream for one file member. Dispose it to complete the member before adding another.

Parameters

path string required
lastWriteTime System.DateTimeOffset? = null optional
compression OfficeIMO.Archives.ZipCompressionMethod? = null optional

Returns

Stream
CreateFromDirectory 2 overloads
public static void CreateFromDirectory(string sourceDirectory, Stream destination, ZipArchiveWriterOptions? options = null, CancellationToken cancellationToken = default) #

Archives a folder's files and subfolders in ordinal path order. Symbolic links and reparse points are rejected.

Parameters

sourceDirectory string required
destination System.IO.Stream required
options OfficeIMO.Archives.ZipArchiveWriterOptions? = null optional
cancellationToken System.Threading.CancellationToken = default optional
public static void CreateFromDirectory(string sourceDirectory, string destinationPath, ZipArchiveWriterOptions? options = null, CancellationToken cancellationToken = default) #

Archives a folder into a new ZIP file. An existing file is not overwritten.

Parameters

sourceDirectory string required
destinationPath string required
options OfficeIMO.Archives.ZipArchiveWriterOptions? = null optional
cancellationToken System.Threading.CancellationToken = default optional
public void Dispose() #

Completes any open member, finishes the archive and releases the destination unless it was left open.

public void Finish() #

Writes the central directory and end records. Further additions are rejected. Dispose also finishes.

Properties

public int Count { get; } #

Number of members written so far.