Note
Access to this page requires authorization. You can try signing in or .
Access to this page requires authorization. You can try .
ZipPackage Class
Definition
- Namespace:
- System.IO.Packaging
- Assembly:
- System.IO.Packaging.dll
- Assembly:
- WindowsBase.dll
- Assemblies:
- System.IO.Packaging.dll, WindowsBase.dll
- Package:
- System.IO.Packaging v11.0.0-preview.5.26302.115
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
- Source:
- ZipPackage.cs
Important
Some information relates to prerelease product that may be substantially modified before itβs released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Implements a derived subclass of the abstract Package base class - the ZipPackage class uses a ZIP archive as the container store. This class cannot be inherited.
public ref class ZipPackage sealed : System::IO::Packaging::Package
public sealed class ZipPackage : System.IO.Packaging.Package
type ZipPackage = class
inherit Package
Public NotInheritable Class ZipPackage
Inherits Package
- Inheritance
Examples
This example shows how to create a basic ZipPackage.
The example creates a package that contains a single document part which is defined as the package's root element by a package-level PackageRelationship.
The package also contains an image part and a second PackageRelationship that defines an association between the source document part and the target image part. (The image is a resource that is used with the document).
// -------------------------- CreatePackage --------------------------
/// <summary>
/// Creates a package zip file containing specified
/// content and resource files.</summary>
private static void CreatePackage()
{
// Convert system path and file names to Part URIs. In this example
// Uri partUriDocument /* /Content/Document.xml */ =
// PackUriHelper.CreatePartUri(
// new Uri("Content\Document.xml", UriKind.Relative));
// Uri partUriResource /* /Resources/Image1.jpg */ =
// PackUriHelper.CreatePartUri(
// new Uri("Resources\Image1.jpg", UriKind.Relative));
Uri partUriDocument = PackUriHelper.CreatePartUri(
new Uri(documentPath, UriKind.Relative));
Uri partUriResource = PackUriHelper.CreatePartUri(
new Uri(resourcePath, UriKind.Relative));
// Create the Package
// (If the package file already exists, FileMode.Create will
// automatically delete it first before creating a new one.
// The 'using' statement insures that 'package' is
// closed and disposed when it goes out of scope.)
using (Package package =
Package.Open(packagePath, FileMode.Create))
{
// Add the Document part to the Package
PackagePart packagePartDocument =
package.CreatePart(partUriDocument,
System.Net.Mime.MediaTypeNames.Text.Xml);
// Copy the data to the Document Part
using (FileStream fileStream = new FileStream(
documentPath, FileMode.Open, FileAccess.Read))
{
CopyStream(fileStream, packagePartDocument.GetStream());
}// end:using(fileStream) - Close and dispose fileStream.
// Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri,
TargetMode.Internal,
PackageRelationshipType);
// Add a Resource Part to the Package
PackagePart packagePartResource =
package.CreatePart(partUriResource,
System.Net.Mime.MediaTypeNames.Image.Jpeg);
// Copy the data to the Resource Part
using (FileStream fileStream = new FileStream(
resourcePath, FileMode.Open, FileAccess.Read))
{
CopyStream(fileStream, packagePartResource.GetStream());
}// end:using(fileStream) - Close and dispose fileStream.
// Add Relationship from the Document part to the Resource part
packagePartDocument.CreateRelationship(
new Uri(@"../resources/image1.jpg",
UriKind.Relative),
TargetMode.Internal,
ResourceRelationshipType);
}// end:using (Package package) - Close and dispose package.
}// end:CreatePackage()
// --------------------------- CopyStream ---------------------------
/// <summary>
/// Copies data from a source stream to a target stream.</summary>
/// <param name="source">
/// The source stream to copy from.</param>
/// <param name="target">
/// The destination stream to copy to.</param>
private static void CopyStream(Stream source, Stream target)
{
const int bufSize = 0x1000;
byte[] buf = new byte[bufSize];
int bytesRead = 0;
while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
target.Write(buf, 0, bytesRead);
}// end:CopyStream()
' -------------------------- CreatePackage --------------------------
''' <summary>
''' Creates a package zip file containing specified
''' content and resource files.</summary>
Private Shared Sub CreatePackage()
' Convert system path and file names to Part URIs. In this example
' Dim partUriDocument as Uri /* /Content/Document.xml */ =
' PackUriHelper.CreatePartUri(
' New Uri("Content\Document.xml", UriKind.Relative))
' Dim partUriResource as Uri /* /Resources/Image1.jpg */ =
' PackUriHelper.CreatePartUri(
' New Uri("Resources\Image1.jpg", UriKind.Relative))
Dim partUriDocument As Uri = PackUriHelper.CreatePartUri(New Uri(documentPath, UriKind.Relative))
Dim partUriResource As Uri = PackUriHelper.CreatePartUri(New Uri(resourcePath, UriKind.Relative))
' Create the Package
' (If the package file already exists, FileMode.Create will
' automatically delete it first before creating a new one.
' The 'using' statement insures that 'package' is
' closed and disposed when it goes out of scope.)
Using package As Package = Package.Open(packagePath, FileMode.Create)
' Add the Document part to the Package
Dim packagePartDocument As PackagePart = package.CreatePart(partUriDocument, System.Net.Mime.MediaTypeNames.Text.Xml)
' Copy the data to the Document Part
Using fileStream As New FileStream(documentPath, FileMode.Open, FileAccess.Read)
CopyStream(fileStream, packagePartDocument.GetStream())
End Using ' end:using(fileStream) - Close and dispose fileStream.
' Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri, TargetMode.Internal, PackageRelationshipType)
' Add a Resource Part to the Package
Dim packagePartResource As PackagePart = package.CreatePart(partUriResource, System.Net.Mime.MediaTypeNames.Image.Jpeg)
' Copy the data to the Resource Part
Using fileStream As New FileStream(resourcePath, FileMode.Open, FileAccess.Read)
CopyStream(fileStream, packagePartResource.GetStream())
End Using ' end:using(fileStream) - Close and dispose fileStream.
' Add Relationship from the Document part to the Resource part
packagePartDocument.CreateRelationship(New Uri("../resources/image1.jpg", UriKind.Relative), TargetMode.Internal, ResourceRelationshipType)
End Using ' end:using (Package package) - Close and dispose package.
End Sub
' --------------------------- CopyStream ---------------------------
''' <summary>
''' Copies data from a source stream to a target stream.</summary>
''' <param name="source">
''' The source stream to copy from.</param>
''' <param name="target">
''' The destination stream to copy to.</param>
Private Shared Sub CopyStream(ByVal source As Stream, ByVal target As Stream)
Const bufSize As Integer = &H1000
Dim buf(bufSize - 1) As Byte
Dim bytesRead As Integer = 0
bytesRead = source.Read(buf, 0, bufSize)
Do While bytesRead > 0
target.Write(buf, 0, bytesRead)
bytesRead = source.Read(buf, 0, bufSize)
Loop
End Sub
Remarks
The Package.Open method uses ZipPackage containers by default.
Properties
| Name | Description |
|---|---|
| FileOpenAccess |
Gets the file access setting for the package. (Inherited from Package) |
| PackageProperties |
Gets the core properties of the package. (Inherited from Package) |
Methods
| Name | Description |
|---|---|
| Close() |
Saves and closes the package plus all underlying part streams. (Inherited from Package) |
| CreatePart(Uri, String, CompressionOption) |
Creates a new part with a given URI, content type, and compression option. (Inherited from Package) |
| CreatePart(Uri, String) |
Creates a new uncompressed part with a given URI and content type. (Inherited from Package) |
| CreatePartCore(Uri, String, CompressionOption) |
When overridden in a derived class, creates a new part in the package. (Inherited from Package) |
| CreateRelationship(Uri, TargetMode, String, String) |
Creates a package-level relationship to a part with a given URI, target mode, relationship type, and identifier (ID). (Inherited from Package) |
| CreateRelationship(Uri, TargetMode, String) |
Creates a package-level relationship to a part with a given URI, target mode, and relationship type. (Inherited from Package) |
| DeletePart(Uri) |
Deletes a part with a given URI from the package. (Inherited from Package) |
| DeletePartCore(Uri) |
When overridden in a derived class, deletes a part with a given URI. (Inherited from Package) |
| DeleteRelationship(String) |
Deletes a package-level relationship. (Inherited from Package) |
| Dispose(Boolean) |
Flushes and saves the content of all parts and relationships, closes the package, and releases all resources. (Inherited from Package) |
| Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
| Flush() |
Saves the contents of all parts and relationships that are contained in the package. (Inherited from Package) |
| FlushCore() |
When overridden in a derived class, saves the content of all parts and relationships to the derived class store. (Inherited from Package) |
| GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
| GetPart(Uri) |
Returns the part with a given URI. (Inherited from Package) |
| GetPartCore(Uri) |
When overridden in a derived class, returns the part addressed by a given URI. (Inherited from Package) |
| GetParts() |
Returns a collection of all the parts in the package. (Inherited from Package) |
| GetPartsCore() |
When overridden in a derived class, returns an array of all the parts in the package. (Inherited from Package) |
| GetRelationship(String) |
Returns the package-level relationship with a given identifier. (Inherited from Package) |
| GetRelationships() |
Returns a collection of all the package-level relationships. (Inherited from Package) |
| GetRelationshipsByType(String) |
Returns a collection of all the package-level relationships that match a given RelationshipType. (Inherited from Package) |
| GetType() |
Gets the Type of the current instance. (Inherited from Object) |
| MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
| PartExists(Uri) |
Indicates whether a part with a given URI is in the package. (Inherited from Package) |
| RelationshipExists(String) |
Indicates whether a package-level relationship with a given ID is contained in the package. (Inherited from Package) |
| ToString() |
Returns a string that represents the current object. (Inherited from Object) |
Explicit Interface Implementations
| Name | Description |
|---|---|
| IDisposable.Dispose() |
This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended for application use. Use the type-safe Dispose(Boolean) method instead. (Inherited from Package) |
Applies to
See also
Feedback
Was this page helpful?
