ZipPackage Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Implementerar en härledd underklass av den abstrakta Package basklassen ZipPackage – klassen använder ett ZIP-arkiv som containerarkiv. Det går inte att ärva den här klassen.
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
- Arv
Exempel
Det här exemplet visar hur du skapar en grundläggande ZipPackage.
I exemplet skapas ett paket som innehåller en enda dokumentdel som definieras som paketets rotelement av en paketnivå PackageRelationship.
Paketet innehåller också en bilddel och en sekund PackageRelationship som definierar en association mellan källdokumentdelen och målbilddelen. (Bilden är en resurs som används med dokumentet).
// -------------------------- 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
Kommentarer
Paketet.Open -metoden använder ZipPackage containrar som standard.
Egenskaper
| Name | Description |
|---|---|
| FileOpenAccess |
Hämtar filåtkomstinställningen för paketet. (Ärvd från Package) |
| PackageProperties |
Hämtar paketets kärnegenskaper. (Ärvd från Package) |
Metoder
| Name | Description |
|---|---|
| Close() |
Sparar och stänger paketet plus alla underliggande delströmmar. (Ärvd från Package) |
| CreatePart(Uri, String, CompressionOption) |
Skapar en ny del med en viss URI, innehållstyp och komprimeringsalternativ. (Ärvd från Package) |
| CreatePart(Uri, String) |
Skapar en ny okomprimerad del med en viss URI och innehållstyp. (Ärvd från Package) |
| CreatePartCore(Uri, String, CompressionOption) |
När den åsidosätts i en härledd klass skapar du en ny del i paketet. (Ärvd från Package) |
| CreateRelationship(Uri, TargetMode, String, String) |
Skapar en paketnivårelation till en del med en viss URI, målläge, relationstyp och identifierare (ID). (Ärvd från Package) |
| CreateRelationship(Uri, TargetMode, String) |
Skapar en relation på paketnivå till en del med en viss URI, målläge och relationstyp. (Ärvd från Package) |
| DeletePart(Uri) |
Tar bort en del med en viss URI från paketet. (Ärvd från Package) |
| DeletePartCore(Uri) |
När den åsidosätts i en härledd klass tas en del bort med en viss URI. (Ärvd från Package) |
| DeleteRelationship(String) |
Tar bort en relation på paketnivå. (Ärvd från Package) |
| Dispose(Boolean) |
Rensar och sparar innehållet i alla delar och relationer, stänger paketet och släpper alla resurser. (Ärvd från Package) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Flush() |
Sparar innehållet i alla delar och relationer som ingår i paketet. (Ärvd från Package) |
| FlushCore() |
När det åsidosättas i en härledd klass sparar innehållet i alla delar och relationer till det härledda klassarkivet. (Ärvd från Package) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetPart(Uri) |
Returnerar delen med en given URI. (Ärvd från Package) |
| GetPartCore(Uri) |
När den åsidosätts i en härledd klass returnerar den del som hanteras av en viss URI. (Ärvd från Package) |
| GetParts() |
Returnerar en samling med alla delar i paketet. (Ärvd från Package) |
| GetPartsCore() |
När den åsidosättas i en härledd klass returnerar en matris med alla delar i paketet. (Ärvd från Package) |
| GetRelationship(String) |
Returnerar relationen på paketnivå med en viss identifierare. (Ärvd från Package) |
| GetRelationships() |
Returnerar en samling av alla relationer på paketnivå. (Ärvd från Package) |
| GetRelationshipsByType(String) |
Returnerar en samling av alla paketnivårelationer som matchar en viss RelationshipType. (Ärvd från Package) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| PartExists(Uri) |
Anger om en del med en viss URI finns i paketet. (Ärvd från Package) |
| RelationshipExists(String) |
Anger om en relation på paketnivå med ett visst ID finns i paketet. (Ärvd från Package) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Den här medlemmen stöder infrastrukturen för Windows Presentation Foundation (WPF) och är inte avsedd för programanvändning. Använd metoden type-safe Dispose(Boolean) i stället. (Ärvd från Package) |