Package Kelas

Definisi

Mewakili kontainer yang dapat menyimpan beberapa objek data.

public ref class Package abstract : IDisposable
public abstract class Package : IDisposable
type Package = class
    interface IDisposable
Public MustInherit Class Package
Implements IDisposable
Warisan
Package
Turunan
Penerapan

Contoh

Contoh berikut menunjukkan langkah-langkah dasar untuk membuat Package. Dalam contoh ini, paket dibuat untuk memuat dokumen bersama dengan gambar grafik yang ditampilkan sebagai bagian dari dokumen. (Ini mirip dengan kasus di mana file HTML memiliki <Tag IMG> yang mereferensikan file gambar eksternal.) Dua PackageRelationship elemen juga disertakan dalam paket. Yang pertama, hubungan "tingkat paket", mendefinisikan bagian dokumen sebagai elemen akar paket. Hubungan kedua, "tingkat bagian" mendefinisikan hubungan antara bagian dokumen ("sumber" hubungan tingkat bagian) dan penggunaan bagian gambar ("target" dari hubungan tingkat bagian). Untuk sampel lengkapnya, lihat Menulis Sampel Paket.

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

Keterangan

Package adalah kelas abstrak yang dapat digunakan untuk mengatur objek ke dalam satu entitas dari format fisik yang ditentukan untuk portabilitas dan akses yang efisien.

File ZIP adalah format fisik utama untuk Package. Implementasi lain Package mungkin menggunakan format fisik lain seperti dokumen XML, database, atau layanan Web.

Seperti sistem file, item yang terkandung dalam Package direferensikan dalam organisasi hierarki folder dan file.

Meskipun Package itu sendiri adalah kelas abstrak, kelas turunan ZipPackage digunakan sebagai default oleh Open metode .

PackagePart ("bagian") adalah kelas abstrak yang mewakili objek yang disimpan dalam Package.

PackageRelationship ("hubungan") mendefinisikan hubungan antara sumber Package atau PackagePart dan objek target. PackageRelationship Dapat berupa salah satu dari dua jenis, yang masing-masing dapat berupa salah satu dari dua bentuk:

Sumber atau sumber PackagePart hubungan Package dianggap sebagai "pemilik" hubungan. Ketika objek sumber dihapus, semua hubungan yang dimiliki oleh objek sumber juga dihapus. Proses pembuatan atau penghapusan hubungan tidak secara fisik mengubah objek sumber atau target dengan cara apa pun.

PackageDigitalSignature ("tanda tangan digital") adalah komposisi bagian dan hubungan yang mewakili tanda tangan digital yang disertakan dengan Package. Tanda tangan digital mengidentifikasi penanda dan memvalidasi bahwa bagian dan hubungan yang ditandatangani yang terkandung dalam Package belum dimodifikasi.

Paket juga mendukung Manajemen Hak Digital (DRM) yang memungkinkan elemen konten dalam dienkripsi Package dengan hak akses tertentu yang diberikan kepada pengguna yang berwenang.

Berdasarkan Package arsitektur, adalah XpsDocument jenis paket yang dirancang untuk menyimpan dokumen berdasarkan Spesifikasi Kertas XML (XPS) terbuka.

.NET Framework menggunakan paket untuk menyimpan konten, sumber daya, dan hubungan untuk halaman dan dokumen menggunakan file ZIP standar secara default. Seperti halnya file ZIP apa pun, aplikasi Anda dapat menggunakan System.IO.Packaging kelas untuk menyimpan dan secara opsional melindungi semua jenis atau jumlah file data dalam satu kontainer yang efisien untuk diakses.

Untuk informasi selengkapnya, lihat spesifikasi Konvensi Kemasan Terbuka (OPC) yang tersedia untuk diunduh di https://www.ecma-international.org/publications-and-standards/standards/ecma-376/.

Konstruktor

Package(FileAccess)

Menginisialisasi instans baru kelas Package yang menggunakan .FileAccess

Package(FileAccess, Boolean)

Menginisialisasi instans Package baru kelas yang menggunakan opsi tertentu FileAccess dan streaming.

Properti

FileOpenAccess

Mendapatkan pengaturan akses file untuk paket.

PackageProperties

Mendapatkan properti inti paket.

Metode

Close()

Menyimpan dan menutup paket ditambah semua aliran bagian yang mendasar.

CreatePart(Uri, String)

Membuat bagian baru yang tidak dikompresi dengan URI dan jenis konten tertentu.

CreatePart(Uri, String, CompressionOption)

Membuat bagian baru dengan opsi URI, jenis konten, dan pemadatan tertentu.

CreatePartCore(Uri, String, CompressionOption)

Ketika ditimpa di kelas turunan, membuat bagian baru dalam paket.

CreateRelationship(Uri, TargetMode, String)

Membuat hubungan tingkat paket ke bagian dengan URI, mode target, dan jenis hubungan tertentu.

CreateRelationship(Uri, TargetMode, String, String)

Membuat hubungan tingkat paket ke bagian dengan URI, mode target, jenis hubungan, dan pengidentifikasi (ID) tertentu.

DeletePart(Uri)

Menghapus bagian dengan URI tertentu dari paket.

DeletePartCore(Uri)

Saat ditimpa di kelas turunan, menghapus bagian dengan URI tertentu.

DeleteRelationship(String)

Menghapus hubungan tingkat paket.

Dispose(Boolean)

Menghapus dan menyimpan konten semua bagian dan hubungan, menutup paket, dan merilis semua sumber daya.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Flush()

Menyimpan konten semua bagian dan hubungan yang terkandung dalam paket.

FlushCore()

Saat ditimpa di kelas turunan, menyimpan konten semua bagian dan hubungan ke penyimpanan kelas turunan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetPart(Uri)

Mengembalikan bagian dengan URI tertentu.

GetPartCore(Uri)

Saat ditimpa di kelas turunan, mengembalikan bagian yang ditangani oleh URI tertentu.

GetParts()

Mengembalikan kumpulan semua bagian dalam paket.

GetPartsCore()

Saat ditimpa di kelas turunan, mengembalikan array dari semua bagian dalam paket.

GetRelationship(String)

Mengembalikan hubungan tingkat paket dengan pengidentifikasi tertentu.

GetRelationships()

Mengembalikan kumpulan semua hubungan tingkat paket.

GetRelationshipsByType(String)

Mengembalikan kumpulan semua hubungan tingkat paket yang cocok dengan yang diberikan RelationshipType.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
Open(Stream)

Membuka paket pada aliran IO tertentu.

Open(Stream, FileMode)

Membuka paket dengan aliran IO dan mode file tertentu.

Open(Stream, FileMode, FileAccess)

Membuka paket dengan aliran IO, mode file, dan pengaturan akses file tertentu.

Open(String)

Membuka paket pada jalur dan nama file tertentu.

Open(String, FileMode)

Membuka paket pada jalur tertentu menggunakan mode file tertentu.

Open(String, FileMode, FileAccess)

Membuka paket di jalur tertentu menggunakan mode file dan pengaturan akses file tertentu.

Open(String, FileMode, FileAccess, FileShare)

Membuka paket di jalur tertentu menggunakan mode file, akses file, dan pengaturan berbagi file tertentu.

PartExists(Uri)

Menunjukkan apakah bagian dengan URI tertentu ada dalam paket.

RelationshipExists(String)

Menunjukkan apakah hubungan tingkat paket dengan ID tertentu terkandung dalam paket.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

IDisposable.Dispose()

Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk penggunaan aplikasi. Gunakan metode jenis aman Dispose(Boolean) sebagai gantinya.

Berlaku untuk

Lihat juga