War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Package-Klasse

Stellt einen Container dar, in dem mehrere Datenobjekte gespeichert werden können.

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)

public abstract class Package : IDisposable

Der Package-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodePackage(FileAccess)Initialisiert eine neue Instanz der Package-Klasse, die einen angegebenen FileAccess verwendet.
Geschützte MethodePackage(FileAccess, Boolean)Initialisiert eine neue Instanz der Package-Klasse, die einen angegebenen FileAccess und eine angegebene Streamingoption verwendet.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftFileOpenAccessRuft die Dateizugriffseinstellung für das Paket ab.
Öffentliche EigenschaftPackagePropertiesRuft die Haupteigenschaften des Pakets ab.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeCloseSpeichert und schließt das Paket sowie alle zugrunde liegenden Partstreams.
Öffentliche MethodeCreatePart(Uri, String)Erstellt ein neues unkomprimiertes Part mit einem angegebenen URI und Inhaltstyp.
Öffentliche MethodeCreatePart(Uri, String, CompressionOption)Erstellt ein neues Part mit einem angegebenen URI, einem angegebenen Inhaltstyp und einer angegebenen Komprimierungsoption.
Geschützte MethodeCreatePartCoreErstellt beim Überschreiben in einer abgeleiteten Klasse ein neues Part im Paket.
Öffentliche MethodeCreateRelationship(Uri, TargetMode, String)Erstellt eine Beziehung auf Paketebene zu einem Part mit einem angegebenen URI, einem angegebenen Zielmodus und einem angegebenen Beziehungstyp.
Öffentliche MethodeCreateRelationship(Uri, TargetMode, String, String)Erstellt eine Beziehung auf Paketebene zu einem Part mit einem angegebenen URI, einem angegebenen Zielmodus, einem angegebenen Beziehungstyp und einer angegebenen Bezeichner (identifier, ID).
Öffentliche MethodeDeletePartLöscht ein Part mit einem angegebenen URI aus dem Paket.
Geschützte MethodeDeletePartCoreLöscht beim Überschreiben in einer abgeleiteten Klasse ein Part mit einem angegebenen URI.
Öffentliche MethodeDeleteRelationshipLöscht eine Beziehung auf Paketebene.
Geschützte MethodeDisposeLeert und speichert den Inhalt von allen Parts und Beziehungen, schließt das Paket und gibt alle Ressourcen frei.
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeFlushSpeichert die Inhalte von allen Parts und Beziehungen, die im Paket enthalten sind.
Geschützte MethodeFlushCoreSpeichert beim Überschreiben in einer abgeleiteten Klasse die Inhalte aller Parts und Beziehungen im Speicher der abgeleiteten Klasse.
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetPartGibt das Part mit einem angegebenen URI zurück.
Geschützte MethodeGetPartCoreGibt beim Überschreiben in einer abgeleiteten Klasse das von einem angegebenen URI adressierte Part zurück.
Öffentliche MethodeGetPartsGibt eine Auflistung aller Parts im Paket zurück.
Geschützte MethodeGetPartsCoreGibt beim Überschreiben in einer abgeleiteten Klasse ein Array aller Parts im Paket zurück.
Öffentliche MethodeGetRelationshipGibt die Beziehung auf Paketebene zu einem angegebenen Bezeichner zurück.
Öffentliche MethodeGetRelationshipsGibt eine Auflistung aller Beziehungen auf Paketebene zurück.
Öffentliche MethodeGetRelationshipsByTypeGibt eine Auflistung aller Beziehungen auf Paketebene zurück, die mit einem angegebenen RelationshipType übereinstimmen.
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeStatischer MemberOpen(Stream)Öffnet ein Paket in einem angegebenen E/A-Stream.
Öffentliche MethodeStatischer MemberOpen(String)Öffnet ein Paket mit einem angegebenen Pfad und Dateinamen.
Öffentliche MethodeStatischer MemberOpen(Stream, FileMode)Öffnet ein Paket mit einem angegebenen E/A-Stream und Dateimodus.
Öffentliche MethodeStatischer MemberOpen(String, FileMode)Öffnet mithilfe einer angegebenen Dateimethode ein Paket in einem angegebenen Pfad.
Öffentliche MethodeStatischer MemberOpen(Stream, FileMode, FileAccess)Öffnet ein Paket mit einem angegebenen E/A-Stream, einem angegebenen Dateimodus und einer angegebenen Dateizugriffseinstellung.
Öffentliche MethodeStatischer MemberOpen(String, FileMode, FileAccess)Öffnet mit einem angegebenen Dateimodus und einer angegebenen Dateizugriffseinstellung ein Paket in einem angegebenen Pfad.
Öffentliche MethodeStatischer MemberOpen(String, FileMode, FileAccess, FileShare)Öffnet mit einem angegebenen Dateimodus, einer angegebenen Dateizugriffseinstellung und einer angegebenen Dateifreigabeeinstellung ein Paket in einem angegebenen Pfad.
Öffentliche MethodePartExistsGibt an, ob ein Part mit einem angegebenen URI im Paket vorhanden ist.
Öffentliche MethodeRelationshipExistsGibt an, ob eine Beziehung auf Paketebene mit einer angegebenen ID im Paket enthalten ist.
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate MethodeIDisposable.DisposeDieser Member unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die Anwendungsverwendung vorgesehen. Verwenden Sie stattdessen die typsichere Dispose-Methode.
Zum Seitenanfang

Package ist eine abstrakte Klasse, die zum Anordnen von Objekten in einer einzelnen Entität mit einem definierten physischen Format für Portabilität und effizienten Zugriff verwendet werden kann.

Das primäre physische Format für das Package ist eine ZIP-Datei. Andere Package-Implementierungen können andere physische Formate, z. B. XML-Dokumente, eine Datenbank oder einen Webdienst, verwenden.

Auf Elemente in einem Package wird wie in einem Dateisystem in einer hierarchischen Anordnung von Ordnern und Dateien verwiesen.

Package selbst ist zwar eine abstrakte Klasse, die abgeleitete ZipPackage-Klasse von der Open-Methode wird jedoch als Standardklasse verwendet.

Ein PackagePart ("Part") ist die abstrakte Klasse, die ein Objekt darstellt, das in einem Package gespeichert wird.

Eine PackageRelationship ("Beziehung") definiert eine Zuordnung zwischen einem Quell-Package oder einem Quell-PackagePart und einem Zielobjekt. Eine PackageRelationship kann einen von zwei Typen aufweisen, die in einer von zwei Formen vorhanden sein können:

  • Eine Beziehung auf Paketebene (von der Package.CreateRelationship-Methode erstellt) stellt eine Beziehung eines Package zu einem von zwei Elementen dar:

    • Ein Zielpart im Paket

    • Eine Zielressource außerhalb des Pakets

  • Eine Beziehung auf Partebene (von der PackagePart.CreateRelationship-Methode erstellt) stellt eine Beziehung eines Quell-PackagePart zu einem von zwei Elementen dar:

    • Ein anderes Zielpart im Paket

    • Eine Zielressource außerhalb des Pakets

Das Quell-Package oder Quell-PackagePart der Beziehung gilt als Besitzer der Beziehung. Wenn das Quellobjekt gelöscht wird, werden alle Beziehungen, deren Besitzer das Quellobjekt ist, ebenfalls gelöscht. Durch das Erstellen oder Löschen einer Beziehung wird das Quell- oder Zielobjekt nicht physisch geändert.

Eine PackageDigitalSignature ("digitale Signatur") besteht aus Parts und Beziehungen, die eine digitale Signatur in einem Package darstellen. Die digitale Signatur gibt den Ersteller an und überprüft, ob die signierten Parts und Beziehungen im Package geändert wurden.

Pakete unterstützen auch die Verwaltung digitaler Rechte (Digital Rights Management, DRM), die die Verschlüsselung von Inhaltselementen in einem Package mit speziellen Zugriffsrechten für autorisierte Benutzer ermöglicht.

Ein XpsDocument basiert auf der Package-Architektur und ist zum Speichern von Dokumenten vorgesehen, die auf der XML Paper Specification (XPS) beruhen.

Microsoft .NET Framework verwendet Pakete zum Speichern von Inhalten, Ressourcen und Beziehungen für Seiten und Dokumente standardmäßig mithilfe einer Standard-ZIP-Datei. Wie bei jeder ZIP-Datei kann die Anwendung mithilfe der System.IO.Packaging-Klassen eine beliebige Anzahl und jeden Typ von Datendateien in einem einzelnen Container mit effizientem Zugriff speichern und optional schützen.

Weitere Informationen finden Sie in der OPC (Open Packaging Conventions)-Spezifikation, die unter http://go.microsoft.com/fwlink/?LinkID=71255 heruntergeladen werden kann.

Im folgenden Beispiel werden die grundlegenden Schritte zum Erstellen eines Package veranschaulicht. In diesem Beispiel wird ein Paket erstellt, das ein Dokument und eine Grafik enthält, die als Part des Dokuments angezeigt wird. (Dies entspricht einer HTML-Datei mit einem <IMG>-Tag, das auf eine externe Bilddatei verweist.) Zwei PackageRelationship-Elemente sind auch im Paket enthalten. Das erste Element, eine Beziehung auf Paketebene, definiert das Dokumentpart als das Stammelement des Pakets. Das zweite Element, eine Beziehung auf Partebene, definiert die Zuordnung zwischen dem Dokumentpart (die Quelle der Beziehung auf Partebene) und dem Bildpart (das Ziel der Beziehung auf Partebene). Das vollständige Beispiel finden Sie unter Beispiel für das Schreiben eines Pakets.


//  -------------------------- 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()


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft