Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / IO / Packaging / ZipPackagePart.cs / 1305600 / ZipPackagePart.cs
//------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // This is a subclass for the abstract PackagePart class. // This implementation is specific to Zip file format. // // History: // 12/28/2004: SarjanaS: Initial creation. [BruceMac provided some of the // initial code] // //----------------------------------------------------------------------------- using System; using System.Collections.Generic; using MS.Internal.IO.Zip; using MS.Internal.IO.Packaging; using MS.Internal; // for Invariant namespace System.IO.Packaging { ////// This class represents a Part within a Zip container. /// This is a part of the Packaging Layer APIs /// public sealed class ZipPackagePart : PackagePart { //----------------------------------------------------- // // Public Constructors // //----------------------------------------------------- // None //------------------------------------------------------ // // Public Properties // //----------------------------------------------------- // None //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ #region Public Methods ////// Custom Implementation for the GetStream Method /// /// Mode in which the stream should be opened /// Access with which the stream should be opened ///Stream Corresponding to this part protected override Stream GetStreamCore(FileMode mode, FileAccess access) { if (Package.InStreamingCreation) { // Convert Metro CompressionOption to Zip CompressionMethodEnum. CompressionMethodEnum compressionMethod; DeflateOptionEnum deflateOption; ZipPackage.GetZipCompressionMethodFromOpcCompressionOption(this.CompressionOption, out compressionMethod, out deflateOption); // Mode and access get validated in StreamingZipPartStream(). return new StreamingZipPartStream( PackUriHelper.GetStringForPartUri(this.Uri), _zipArchive, compressionMethod, deflateOption, mode, access); } else if (_zipFileInfo != null) { // Case of an atomic part. return _zipFileInfo.GetStream(mode, access); } else { // Case of an interleaved part. Invariant.Assert(_pieces != null); return new InterleavedZipPartStream(this, mode, access); } } #endregion Public Methods //----------------------------------------------------- // // Public Events // //------------------------------------------------------ // None //----------------------------------------------------- // // Internal Constructors // //----------------------------------------------------- #region Internal Constructors ////// Constructs a ZipPackagePart for an atomic (i.e. non-interleaved) part. /// This is called from the ZipPackage class as a result of GetPartCore, /// GetPartsCore or CreatePartCore methods /// /// /// /// /// /// internal ZipPackagePart(ZipPackage container, ZipFileInfo zipFileInfo, PackUriHelper.ValidatedPartUri partUri, string contentType, CompressionOption compressionOption) :base(container, partUri, contentType, compressionOption) { _zipArchive = zipFileInfo.ZipArchive; _zipFileInfo = zipFileInfo; } ////// Constructs a ZipPackagePart. This is called from ZipPackage.CreatePartCore in streaming /// production. /// No piece is created until the first write operation on the associated stream. Therefore /// this constructor does not take a ZipFileInfo. /// /// /// /// /// /// internal ZipPackagePart(ZipPackage container, ZipArchive zipArchive, PackUriHelper.ValidatedPartUri partUri, string contentType, CompressionOption compressionOption) :base(container, partUri, contentType, compressionOption) { _zipArchive = zipArchive; } ////// Constructs a ZipPackagePart for an interleaved part. This is called outside of streaming /// production when an interleaved part is encountered in the package. /// /// /// /// /// /// /// internal ZipPackagePart(ZipPackage container, ZipArchive zipArchive, Listpieces, PackUriHelper.ValidatedPartUri partUri, string contentType, CompressionOption compressionOption) :base(container, partUri, contentType, compressionOption) { _zipArchive = zipArchive; _pieces = pieces; } #endregion Internal Constructors //----------------------------------------------------- // // Internal Properties // //------------------------------------------------------ #region Internal Properties /// /// Obtain the sorted array of piece descriptors for an interleaved part. /// internal ListPieceDescriptors { get { return _pieces; } } /// /// Obtain the ZipFileInfo descriptor of an atomic part. /// internal ZipFileInfo ZipFileInfo { get { return _zipFileInfo; } } #endregion Internal Properties //----------------------------------------------------- // // Internal Methods // //------------------------------------------------------ // None //------------------------------------------------------ // // Internal Events // //----------------------------------------------------- // None //------------------------------------------------------ // // Private Methods // //----------------------------------------------------- // None //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Variables // Zip item info for an atomic part. private ZipFileInfo _zipFileInfo; // Piece descriptors for an interleaved part. private List_pieces; //ZipArhive private ZipArchive _zipArchive; #endregion Private Variables //------------------------------------------------------ } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AutomationProperty.cs
- DataSourceComponent.cs
- ImageDesigner.cs
- SvcMapFileSerializer.cs
- WorkflowMessageEventHandler.cs
- JpegBitmapDecoder.cs
- CommandPlan.cs
- ToolStripLabel.cs
- EntityModelBuildProvider.cs
- ScrollPatternIdentifiers.cs
- SHA256Managed.cs
- DisplayInformation.cs
- Ref.cs
- EditorZone.cs
- WebHttpSecurity.cs
- MediaContext.cs
- ModelPropertyDescriptor.cs
- TdsParserSafeHandles.cs
- DataSpaceManager.cs
- DesignTimeVisibleAttribute.cs
- BooleanProjectedSlot.cs
- SoapObjectWriter.cs
- MenuDesigner.cs
- CellTreeNode.cs
- WebPartMovingEventArgs.cs
- EncodingTable.cs
- ConnectionPoolManager.cs
- LogExtentCollection.cs
- PeerName.cs
- RelatedCurrencyManager.cs
- MimeBasePart.cs
- ToolStripDropDownClosedEventArgs.cs
- FlowDocumentPageViewerAutomationPeer.cs
- CatalogUtil.cs
- FixUpCollection.cs
- RealizationDrawingContextWalker.cs
- ClrPerspective.cs
- KeyedHashAlgorithm.cs
- TabControlCancelEvent.cs
- OleDbDataReader.cs
- MediaContext.cs
- ControlEvent.cs
- StateDesigner.Layouts.cs
- CodeTypeParameter.cs
- ShaderRenderModeValidation.cs
- AvTrace.cs
- LeaseManager.cs
- WindowsImpersonationContext.cs
- DataObjectSettingDataEventArgs.cs
- Win32.cs
- DataSourceView.cs
- StringSource.cs
- TemplatedEditableDesignerRegion.cs
- SizeValueSerializer.cs
- PocoPropertyAccessorStrategy.cs
- ExpressionBuilder.cs
- RepeaterItemCollection.cs
- HtmlInputText.cs
- OleDbException.cs
- AnnotationStore.cs
- ContractReference.cs
- Command.cs
- SqlInternalConnectionSmi.cs
- PageStatePersister.cs
- BaseCAMarshaler.cs
- LoginCancelEventArgs.cs
- HScrollBar.cs
- RequestCacheManager.cs
- DirtyTextRange.cs
- CellTreeSimplifier.cs
- ISAPIWorkerRequest.cs
- SqlMethodCallConverter.cs
- HierarchicalDataSourceDesigner.cs
- PrimitiveType.cs
- VisualTreeUtils.cs
- HitTestParameters.cs
- _AcceptOverlappedAsyncResult.cs
- TimeEnumHelper.cs
- ConfigurationValidatorBase.cs
- SetStateDesigner.cs
- PolygonHotSpot.cs
- SByte.cs
- WebPartPersonalization.cs
- CodeIterationStatement.cs
- ToolStripRenderer.cs
- FontWeightConverter.cs
- ModifierKeysConverter.cs
- NamedObjectList.cs
- ClientTarget.cs
- TCPListener.cs
- StoreAnnotationsMap.cs
- EventLogPermissionHolder.cs
- PrintPreviewDialog.cs
- QilReference.cs
- X509ChainPolicy.cs
- SchemaTableColumn.cs
- ConnectionProviderAttribute.cs
- ConfigurationElement.cs
- UpdateTracker.cs
- WebControlAdapter.cs