Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / TrustUi / MS / Internal / documents / Application / StreamHelper.cs / 1 / StreamHelper.cs
//------------------------------------------------------------------------------ //// Copyright (C) Microsoft Corporation. All rights reserved. // //// A static utilitly class for stream related functions. // // // History: // 08/28/2005: [....]: Initial implementation. //----------------------------------------------------------------------------- using System; using System.IO; namespace MS.Internal.Documents.Application { ////// A static utilitly class for stream related functions. /// internal static class StreamHelper { #region Internal Methods //------------------------------------------------------------------------- // Internal Methods //------------------------------------------------------------------------- ////// A simple stream copy from one to another. /// ////// If anyone knows of an existing mechanism please contact me and /// I will remove this code. /// /// Performance: This block of code is likely to be the most heavily used /// code with large packages. We should explorer other designs if it /// becomes an issue. /// /// The Stream to read from. /// The Stream to write to. internal static void CopyStream(Stream source, Stream target) { int bufferSize = 4096; // Arbitrary Value byte[] buffer = new byte[bufferSize]; long originalSourcePosition = source.Position; long originalTargetPosition = target.Position; // move to the start source.Position = 0; target.Position = 0; // ensure we have enough space long size = source.Length; target.SetLength(size); // copy the stream syncronously int read = 0; long leftToCopy = size; while (leftToCopy > 0) { if (leftToCopy < bufferSize) { bufferSize = (int)leftToCopy; buffer = new byte[bufferSize]; } read = source.Read(buffer, 0, bufferSize); target.Write(buffer, 0, read); leftToCopy -= read; } // return the streams to thier orignal locations source.Position = originalSourcePosition; target.Position = originalTargetPosition; Trace.SafeWrite(Trace.File, "Copied: {0} bytes.", target.Length); } #if DRT ////// Compares two streams byte by byte. /// /// The original stream /// The stream to compare with. internal static void CompareStream(Stream original, Stream comparee) { original.Position = 0; comparee.Position = 0; int data = 0; int pos = 0; while (data != -1) { data = original.ReadByte(); pos++; Invariant.Assert(data == comparee.ReadByte(), "Data mismatch at postion " + pos); } if (pos - 1 == comparee.Length) { Trace.SafeWrite(Trace.File, "Validate: {0} bytes.", comparee.Length); } } #endif #endregion Internal Methods } } // 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
- RuntimeWrappedException.cs
- GetParentChain.cs
- OdbcPermission.cs
- ArraySet.cs
- CommandTreeTypeHelper.cs
- EmbeddedMailObject.cs
- ActionFrame.cs
- List.cs
- ObjectHandle.cs
- IgnoreFlushAndCloseStream.cs
- ConnectivityStatus.cs
- Tablet.cs
- TableLayoutPanelCellPosition.cs
- Nodes.cs
- SuppressIldasmAttribute.cs
- ObjectNotFoundException.cs
- ExpressionBuilder.cs
- ToggleButtonAutomationPeer.cs
- FontClient.cs
- ObjectSecurity.cs
- DecimalAnimationUsingKeyFrames.cs
- BamlBinaryReader.cs
- HttpResponseMessageProperty.cs
- ExpressionBindingCollection.cs
- PlainXmlWriter.cs
- XmlSchemaAny.cs
- WbemProvider.cs
- QueryExtender.cs
- ComponentManagerBroker.cs
- HttpServerVarsCollection.cs
- SimpleType.cs
- GenericEnumerator.cs
- BitmapEffectState.cs
- DrawingAttributes.cs
- MembershipPasswordException.cs
- XmlValueConverter.cs
- AutomationElementCollection.cs
- FieldCollectionEditor.cs
- KeyProperty.cs
- IUnknownConstantAttribute.cs
- BamlMapTable.cs
- CryptoProvider.cs
- StaticSiteMapProvider.cs
- _CacheStreams.cs
- NetNamedPipeBindingElement.cs
- HorizontalAlignConverter.cs
- XmlHierarchicalDataSourceView.cs
- KeyEvent.cs
- Roles.cs
- GeneratedContractType.cs
- XmlUTF8TextWriter.cs
- SchemaContext.cs
- XmlAggregates.cs
- PropertyCollection.cs
- WebPartPersonalization.cs
- DelegatingMessage.cs
- NavigatingCancelEventArgs.cs
- TypedElement.cs
- PresentationAppDomainManager.cs
- LabelLiteral.cs
- ChildrenQuery.cs
- WebControlParameterProxy.cs
- ChameleonKey.cs
- DataGridViewElement.cs
- CreateSequenceResponse.cs
- ActivityExecutionWorkItem.cs
- typedescriptorpermission.cs
- ExpressionEvaluator.cs
- DataGridColumn.cs
- DataGridPageChangedEventArgs.cs
- WebSysDefaultValueAttribute.cs
- MLangCodePageEncoding.cs
- ObjectItemConventionAssemblyLoader.cs
- RuntimeVariableList.cs
- FileLevelControlBuilderAttribute.cs
- PropertyGridView.cs
- WorkflowNamespace.cs
- control.ime.cs
- XmlSchemaCompilationSettings.cs
- RequestQueryParser.cs
- MarkupCompilePass2.cs
- ExpressionLexer.cs
- ViewStateModeByIdAttribute.cs
- Suspend.cs
- VariableAction.cs
- dataprotectionpermission.cs
- UserPreferenceChangedEventArgs.cs
- ThreadStartException.cs
- ClientTarget.cs
- ToolStripDropTargetManager.cs
- TypedRowGenerator.cs
- WaitForChangedResult.cs
- XmlSchemaObjectCollection.cs
- CircleHotSpot.cs
- GeneralTransformGroup.cs
- Geometry3D.cs
- DropShadowBitmapEffect.cs
- InputReportEventArgs.cs
- PhysicalOps.cs
- ExpressionPrefixAttribute.cs