ZipPackage Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Implementa uma subclasse derivada da classe base abstrata Package – a classe ZipPackage usa um arquivo morto ZIP como o repositório do contêiner. Essa 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 básico ZipPackage.
O exemplo cria um pacote que contém uma única parte do documento que é definida como o elemento raiz do pacote por um nível PackageRelationshipde pacote.
O pacote também conté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 usado 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
Comentários
O Pacote.Open O método usa ZipPackage contêineres por padrão.
Propriedades
FileOpenAccess |
Obtém a configuração de acesso ao arquivo para o pacote. (Herdado de Package) |
PackageProperties |
Obtém as propriedades principais do pacote. (Herdado de Package) |
Métodos
Close() |
Salva e fecha o pacote e todos os fluxos de parte subjacente. (Herdado de Package) |
CreatePart(Uri, String) |
Cria uma nova parte descompactada com um URI e tipo de conteúdo específicos. (Herdado de Package) |
CreatePart(Uri, String, CompressionOption) |
Cria uma nova parte com um URI, um tipo de conteúdo e uma opção de compactação específicos. (Herdado de Package) |
CreatePartCore(Uri, String, CompressionOption) |
Quando substituído em uma classe derivada, cria uma nova parte no pacote. (Herdado de Package) |
CreateRelationship(Uri, TargetMode, String) |
Cria uma relação de nível de pacote para uma parte com um determinado URI, modo de destino e tipo de relacionamento. (Herdado de Package) |
CreateRelationship(Uri, TargetMode, String, String) |
Cria uma relação no nível do pacote com uma parte com um determinado URI, modo de destino, tipo de relação e ID (identificador). (Herdado de Package) |
DeletePart(Uri) |
Exclui uma parte com um determinado URI do pacote. (Herdado de Package) |
DeletePartCore(Uri) |
Quando substituído em uma classe derivada, exclui uma parte com um determinado URI. (Herdado de Package) |
DeleteRelationship(String) |
Exclui a relação do nível de pacote. (Herdado de Package) |
Dispose(Boolean) |
Libera e salva o conteúdo de todas as partes e relações, fecha o pacote e libera todos os recursos. (Herdado de Package) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Flush() |
Salva o conteúdo de todas as partes e relações que estão contidas no pacote. (Herdado de Package) |
FlushCore() |
Quando substituído em uma classe derivada, salva o conteúdo de todas as partes e relações para o repositório de classe derivada. (Herdado de Package) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetPart(Uri) |
Retorna a parte com um determinado URI. (Herdado de Package) |
GetPartCore(Uri) |
Quando substituído em uma classe derivada, retorna a parte endereçada por um determinado URI. (Herdado de Package) |
GetParts() |
Retorna uma coleção de todas as partes no pacote. (Herdado de Package) |
GetPartsCore() |
Quando substituído em uma classe derivada, retorna uma matriz de todas as partes no pacote. (Herdado de Package) |
GetRelationship(String) |
Retorna a relação de nível de pacote com o identificador fornecido. (Herdado de Package) |
GetRelationships() |
Retorna uma coleção de todas as relações de nível de pacote. (Herdado de Package) |
GetRelationshipsByType(String) |
Retorna uma coleção de todas as relações de nível de pacote que correspondem a um determinado RelationshipType. (Herdado de Package) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
PartExists(Uri) |
Indica se uma parte com um determinado URI está no pacote. (Herdado de Package) |
RelationshipExists(String) |
Indica se uma relação de nível de pacote com uma determinada ID está contida no pacote. (Herdado de Package) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
IDisposable.Dispose() |
Esse membro dá suporte à infraestrutura de Windows Presentation Foundation (WPF) e não se destina ao uso do aplicativo. Use o método Dispose(Boolean) fortemente tipado em vez disso. (Herdado de Package) |