ZipPackage Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een afgeleide subklasse van de abstracte Package basisklasse geïmplementeerd. De ZipPackage klasse maakt gebruik van een ZIP-archief als containerarchief. Deze klasse kan niet worden overgenomen.
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
- Overname
Voorbeelden
In dit voorbeeld ziet u hoe u een basis maakt ZipPackage.
In het voorbeeld wordt een pakket gemaakt dat één documentonderdeel bevat dat is gedefinieerd als het hoofdelement van het pakket op pakketniveau PackageRelationship.
Het pakket bevat ook een afbeeldingsonderdeel en een seconde PackageRelationship die een koppeling definieert tussen het brondocumentonderdeel en het doelafbeeldingsonderdeel. (De afbeelding is een resource die wordt gebruikt met het 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
Opmerkingen
Het pakket.Open de methode maakt standaard gebruik van ZipPackage containers.
Eigenschappen
| Name | Description |
|---|---|
| FileOpenAccess |
Hiermee haalt u de instelling voor bestandstoegang voor het pakket op. (Overgenomen van Package) |
| PackageProperties |
Haalt de kerneigenschappen van het pakket op. (Overgenomen van Package) |
Methoden
| Name | Description |
|---|---|
| Close() |
Slaat het pakket op en sluit het plus alle onderliggende onderdeelstreams. (Overgenomen van Package) |
| CreatePart(Uri, String, CompressionOption) |
Hiermee maakt u een nieuw onderdeel met een bepaalde URI, inhoudstype en compressieoptie. (Overgenomen van Package) |
| CreatePart(Uri, String) |
Hiermee maakt u een nieuw niet-gecomprimeerd onderdeel met een bepaalde URI en inhoudstype. (Overgenomen van Package) |
| CreatePartCore(Uri, String, CompressionOption) |
Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuw onderdeel in het pakket. (Overgenomen van Package) |
| CreateRelationship(Uri, TargetMode, String, String) |
Hiermee maakt u een relatie op pakketniveau met een onderdeel met een bepaalde URI, doelmodus, relatietype en id (ID). (Overgenomen van Package) |
| CreateRelationship(Uri, TargetMode, String) |
Hiermee maakt u een relatie op pakketniveau met een onderdeel met een bepaalde URI, doelmodus en relatietype. (Overgenomen van Package) |
| DeletePart(Uri) |
Hiermee verwijdert u een deel met een bepaalde URI uit het pakket. (Overgenomen van Package) |
| DeletePartCore(Uri) |
Wanneer een onderdeel wordt overschreven in een afgeleide klasse, verwijdert u een onderdeel met een bepaalde URI. (Overgenomen van Package) |
| DeleteRelationship(String) |
Hiermee verwijdert u een relatie op pakketniveau. (Overgenomen van Package) |
| Dispose(Boolean) |
Hiermee wordt de inhoud van alle onderdelen en relaties leeggemaakt en opgeslagen, wordt het pakket gesloten en worden alle resources vrijgegeven. (Overgenomen van Package) |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| Flush() |
Hiermee wordt de inhoud van alle onderdelen en relaties opgeslagen die in het pakket zijn opgenomen. (Overgenomen van Package) |
| FlushCore() |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt de inhoud van alle onderdelen en relaties met het afgeleide klassearchief opgeslagen. (Overgenomen van Package) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetPart(Uri) |
Retourneert het onderdeel met een bepaalde URI. (Overgenomen van Package) |
| GetPartCore(Uri) |
Wanneer dit wordt overschreven in een afgeleide klasse, wordt het onderdeel geretourneerd dat is geadresseerd door een bepaalde URI. (Overgenomen van Package) |
| GetParts() |
Retourneert een verzameling van alle onderdelen in het pakket. (Overgenomen van Package) |
| GetPartsCore() |
Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u een matrix van alle onderdelen in het pakket. (Overgenomen van Package) |
| GetRelationship(String) |
Retourneert de relatie op pakketniveau met een bepaalde id. (Overgenomen van Package) |
| GetRelationships() |
Retourneert een verzameling van alle relaties op pakketniveau. (Overgenomen van Package) |
| GetRelationshipsByType(String) |
Hiermee wordt een verzameling geretourneerd van alle relaties op pakketniveau die overeenkomen met een bepaalde RelationshipTyperelatie. (Overgenomen van Package) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| PartExists(Uri) |
Geeft aan of een deel met een bepaalde URI zich in het pakket bevindt. (Overgenomen van Package) |
| RelationshipExists(String) |
Geeft aan of een relatie op pakketniveau met een bepaalde id is opgenomen in het pakket. (Overgenomen van Package) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Dit lid ondersteunt de infrastructuur van Windows Presentation Foundation (WPF) en is niet bedoeld voor toepassingsgebruik. Gebruik in plaats daarvan de methode type-safe Dispose(Boolean) . (Overgenomen van Package) |