ZipPackage Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Implementa uma subclasse derivada da classe base abstrata Package – a ZipPackage classe usa um arquivo ZIP como armazenamento de contentores. Esta classe não pode ser herdada.
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
- Herança
Exemplos
Este exemplo mostra como criar um arquivo básico ZipPackage.
O exemplo cria um pacote que contém uma única parte de documento definida como elemento raiz do pacote por um pacote ao nível PackageRelationshipde um pacote .
O pacote contém também uma parte de imagem e uma segunda PackageRelationship que define uma associação entre a parte do documento de origem e a parte da imagem de destino. (A imagem é um recurso utilizado com o documento).
// -------------------------- 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
Observações
O pacote.Open o método usa ZipPackage contentores por defeito.
Propriedades
| Name | Description |
|---|---|
| FileOpenAccess |
Obtém a definição de acesso ao ficheiro para o pacote. (Herdado de Package) |
| PackageProperties |
Obtém as propriedades essenciais do pacote. (Herdado de Package) |
Métodos
| Name | Description |
|---|---|
| Close() |
Guarda e fecha o pacote mais todos os fluxos de componentes subjacentes. (Herdado de Package) |
| CreatePart(Uri, String, CompressionOption) |
Cria uma nova peça com um determinado URI, tipo de conteúdo e opção de compressão. (Herdado de Package) |
| CreatePart(Uri, String) |
Cria uma nova parte não comprimida com um determinado URI e tipo de conteúdo. (Herdado de Package) |
| CreatePartCore(Uri, String, CompressionOption) |
Quando é sobreposto numa classe derivada, cria-se uma nova parte no pacote. (Herdado de Package) |
| CreateRelationship(Uri, TargetMode, String, String) |
Cria uma relação ao nível do pacote com uma peça com um determinado URI, modo de destino, tipo de relação e identificador (ID). (Herdado de Package) |
| CreateRelationship(Uri, TargetMode, String) |
Cria uma relação ao nível do pacote com uma parte com um determinado URI, modo de destino e tipo de relação. (Herdado de Package) |
| DeletePart(Uri) |
Apaga uma peça com um determinado URI do pacote. (Herdado de Package) |
| DeletePartCore(Uri) |
Quando é sobreposto numa classe derivada, elimina uma parte com um determinado URI. (Herdado de Package) |
| DeleteRelationship(String) |
Elimina uma relação ao nível do pacote. (Herdado de Package) |
| Dispose(Boolean) |
Limpa e guarda o conteúdo de todas as partes e relações, fecha o pacote e liberta todos os recursos. (Herdado de Package) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Flush() |
Guarda o conteúdo de todas as partes e relações contidas no pacote. (Herdado de Package) |
| FlushCore() |
Quando sobrescrito numa classe derivada, guarda o conteúdo de todas as partes e relações para o armazenamento de classes derivadas. (Herdado de Package) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetPart(Uri) |
Devolve a peça com um determinado URI. (Herdado de Package) |
| GetPartCore(Uri) |
Quando sobrescrito numa classe derivada, devolve a parte endereçada por um dado URI. (Herdado de Package) |
| GetParts() |
Devolve uma coleção de todas as peças da embalagem. (Herdado de Package) |
| GetPartsCore() |
Quando sobreposto numa classe derivada, devolve um array de todas as partes do pacote. (Herdado de Package) |
| GetRelationship(String) |
Devolve a relação ao nível do pacote com um identificador dado. (Herdado de Package) |
| GetRelationships() |
Devolve uma coleção de todas as relações ao nível do pacote. (Herdado de Package) |
| GetRelationshipsByType(String) |
Devolve uma coleção de todas as relações ao nível do pacote que correspondem a um dado RelationshipType. (Herdado de Package) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| PartExists(Uri) |
Indica se uma peça com um determinado URI está no pacote. (Herdado de Package) |
| RelationshipExists(String) |
Indica se existe uma relação ao nível do pacote com um determinado ID no pacote. (Herdado de Package) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não é destinado a uso em aplicações. Use antes o método seguro Dispose(Boolean) para tipos. (Herdado de Package) |