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
- QueryUtil.cs
- ArrayTypeMismatchException.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CompiledIdentityConstraint.cs
- StateElementCollection.cs
- Propagator.Evaluator.cs
- AutomationPeer.cs
- StringComparer.cs
- HttpServerVarsCollection.cs
- Helpers.cs
- Rotation3DAnimation.cs
- ActionMessageFilterTable.cs
- GCHandleCookieTable.cs
- DesignerActionUIService.cs
- SafeRsaProviderHandle.cs
- BamlRecordReader.cs
- BrushConverter.cs
- CommentGlyph.cs
- UIElementPropertyUndoUnit.cs
- CursorConverter.cs
- LingerOption.cs
- DelegatingConfigHost.cs
- IDReferencePropertyAttribute.cs
- _ListenerAsyncResult.cs
- SID.cs
- StylusSystemGestureEventArgs.cs
- AssemblyInfo.cs
- InstanceData.cs
- ChangeInterceptorAttribute.cs
- InitializationEventAttribute.cs
- StreamingContext.cs
- GeometryCombineModeValidation.cs
- DataGrid.cs
- SqlNodeAnnotations.cs
- EntitySqlQueryCacheKey.cs
- SqlCommandBuilder.cs
- SelectorItemAutomationPeer.cs
- ClusterSafeNativeMethods.cs
- Label.cs
- ImageAutomationPeer.cs
- OleStrCAMarshaler.cs
- TranslateTransform.cs
- PDBReader.cs
- AttributeExtensions.cs
- Emitter.cs
- CellIdBoolean.cs
- BitmapEffectGroup.cs
- CodeMemberMethod.cs
- KeyFrames.cs
- CommandID.cs
- RemotingException.cs
- WizardSideBarListControlItem.cs
- ISFClipboardData.cs
- SrgsElementFactoryCompiler.cs
- QilGeneratorEnv.cs
- HandlerWithFactory.cs
- ByteStack.cs
- EffectiveValueEntry.cs
- LOSFormatter.cs
- CapabilitiesUse.cs
- UIntPtr.cs
- GroupBox.cs
- AutomationInteropProvider.cs
- FixedPosition.cs
- AnimationStorage.cs
- WinFormsSecurity.cs
- CounterSampleCalculator.cs
- SaveFileDialog.cs
- InternalCache.cs
- RegexRunnerFactory.cs
- CodeTypeOfExpression.cs
- UserControl.cs
- ProvideValueServiceProvider.cs
- UIAgentMonitorHandle.cs
- DataBoundControlHelper.cs
- SystemWebExtensionsSectionGroup.cs
- DoubleKeyFrameCollection.cs
- TableLayoutPanel.cs
- ProjectionPlanCompiler.cs
- NamedPermissionSet.cs
- SimplePropertyEntry.cs
- SystemResources.cs
- NonParentingControl.cs
- ManifestResourceInfo.cs
- AsyncInvokeContext.cs
- DataGridViewCellEventArgs.cs
- TextOnlyOutput.cs
- TextContainer.cs
- WeakRefEnumerator.cs
- CompressEmulationStream.cs
- XmlQueryTypeFactory.cs
- PropertyCondition.cs
- SerialPinChanges.cs
- ExpressionBuilderCollection.cs
- TabControlDesigner.cs
- storepermissionattribute.cs
- XmlSchemaIdentityConstraint.cs
- FixedSOMLineRanges.cs
- ComNativeDescriptor.cs
- TransformedBitmap.cs