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
- MetroSerializationManager.cs
- PriorityChain.cs
- CompiledIdentityConstraint.cs
- UriTemplateClientFormatter.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- MatrixTransform3D.cs
- PropertyNames.cs
- KeyEvent.cs
- Win32.cs
- SafeLocalMemHandle.cs
- CodeTypeConstructor.cs
- arabicshape.cs
- TableHeaderCell.cs
- XmlSerializationReader.cs
- UnSafeCharBuffer.cs
- SourceInterpreter.cs
- WebPartDisplayMode.cs
- BoundColumn.cs
- GeometryConverter.cs
- COMException.cs
- SiteMapNode.cs
- Attributes.cs
- TraceSource.cs
- Errors.cs
- HttpValueCollection.cs
- Directory.cs
- InternalBufferOverflowException.cs
- ListItemCollection.cs
- IntPtr.cs
- PositiveTimeSpanValidatorAttribute.cs
- DeviceContext.cs
- PrintingPermission.cs
- TypeConverterHelper.cs
- FileIOPermission.cs
- QueryOutputWriterV1.cs
- ObjectSecurity.cs
- Int32.cs
- JumpTask.cs
- HtmlInputButton.cs
- BitmapCodecInfo.cs
- PrintController.cs
- XPathDocumentIterator.cs
- hwndwrapper.cs
- X509SecurityTokenParameters.cs
- Method.cs
- PenThread.cs
- TraceSource.cs
- KeyGesture.cs
- CharacterMetricsDictionary.cs
- WindowsToolbar.cs
- PermissionRequestEvidence.cs
- UIntPtr.cs
- NCryptSafeHandles.cs
- TokenizerHelper.cs
- CustomErrorsSection.cs
- DependencyProperty.cs
- DecoderReplacementFallback.cs
- NativeMethods.cs
- ResourceReferenceExpression.cs
- FontStretch.cs
- ToolboxComponentsCreatingEventArgs.cs
- DispatchRuntime.cs
- ConnectionManagementElementCollection.cs
- SafeNativeMethodsMilCoreApi.cs
- FontDriver.cs
- GroupBox.cs
- DataGridViewButtonCell.cs
- InvalidComObjectException.cs
- LinearGradientBrush.cs
- XmlSiteMapProvider.cs
- ThrowHelper.cs
- SpeechSeg.cs
- WebInvokeAttribute.cs
- ImageMetadata.cs
- RadioButtonStandardAdapter.cs
- NativeCompoundFileAPIs.cs
- TabPanel.cs
- FixedPage.cs
- DataGrid.cs
- XmlChildEnumerator.cs
- DesignerInterfaces.cs
- ImageClickEventArgs.cs
- RepeaterItem.cs
- ScriptingProfileServiceSection.cs
- FormsAuthenticationTicket.cs
- FamilyMap.cs
- StateBag.cs
- PnrpPermission.cs
- TemplateControlParser.cs
- DocumentApplication.cs
- Trigger.cs
- GeometryGroup.cs
- WCFModelStrings.Designer.cs
- AsyncOperationContext.cs
- DesignerResources.cs
- RootBuilder.cs
- TextRenderer.cs
- DBConcurrencyException.cs
- shaper.cs
- ExpanderAutomationPeer.cs