This documentation is archived and is not being maintained.
Package.Open Method
Visual Studio 2008
Opens a package.
This member is overloaded. For complete information about this member, including syntax, usage, and examples, click a name in the overload list.
| Name | Description | |
|---|---|---|
|
Open(Stream) | Opens a package on a given IO stream. |
|
Open(String) | Opens a package at a given path and file name. |
|
Open(Stream, FileMode) | Opens a package with a given IO stream and file mode. |
|
Open(String, FileMode) | Opens a package at a given path using a given file mode. |
|
Open(Stream, FileMode, FileAccess) | Opens a package with a given IO stream, file mode, and file access setting. |
|
Open(String, FileMode, FileAccess) | Opens a package at a given path using a given file mode and file access setting. |
|
Open(String, FileMode, FileAccess, FileShare) | Opens a package at a given path using a given file mode, file access, and file share setting. |
ZipPackage is the default package type that is used by the Open method.
For additional information, see the Open Packaging Conventions (OPC) specification available for download at http://go.microsoft.com/fwlink/?LinkID=71255.
The following example shows how to create a new Package that incorporates PackageRelationship and PackagePart elements together with stored data. For the complete sample, see Writing a Package Sample.
// -------------------------- 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()
Show: