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
- webproxy.cs
- _Semaphore.cs
- DriveInfo.cs
- ValueOfAction.cs
- KeyTimeConverter.cs
- ellipse.cs
- MailAddress.cs
- XmlTextReader.cs
- HScrollProperties.cs
- DataPagerFieldCommandEventArgs.cs
- DashStyle.cs
- DataGridViewUtilities.cs
- TraceSection.cs
- Globals.cs
- SamlAdvice.cs
- CipherData.cs
- ServiceDesigner.cs
- FontCollection.cs
- FixedElement.cs
- DataSetMappper.cs
- SelectionRange.cs
- RIPEMD160.cs
- StringExpressionSet.cs
- ApplicationId.cs
- ToolStripOverflow.cs
- CodeCompiler.cs
- templategroup.cs
- AccessibleObject.cs
- ToolboxItemWrapper.cs
- HttpListenerException.cs
- WebServiceTypeData.cs
- LongSumAggregationOperator.cs
- RegisteredArrayDeclaration.cs
- MouseBinding.cs
- StrokeNodeOperations.cs
- MimeFormReflector.cs
- ThreadExceptionEvent.cs
- TextClipboardData.cs
- SizeAnimationClockResource.cs
- SkewTransform.cs
- VirtualPath.cs
- TabItemAutomationPeer.cs
- datacache.cs
- SqlIdentifier.cs
- SmtpMail.cs
- VerificationException.cs
- ExpressionDumper.cs
- CheckBoxFlatAdapter.cs
- FileDialog_Vista_Interop.cs
- DbDataReader.cs
- CodePrimitiveExpression.cs
- XmlBinaryReader.cs
- WebPartDisplayModeCancelEventArgs.cs
- CrossSiteScriptingValidation.cs
- DescendentsWalker.cs
- SoapIgnoreAttribute.cs
- ApplicationTrust.cs
- Char.cs
- XmlC14NWriter.cs
- TypefaceMetricsCache.cs
- FontDriver.cs
- Debug.cs
- EntityDesignerUtils.cs
- ClientFormsAuthenticationMembershipProvider.cs
- Hash.cs
- DataControlCommands.cs
- XsltLibrary.cs
- IPAddress.cs
- TiffBitmapEncoder.cs
- EntityDataSourceContextCreatedEventArgs.cs
- PointLight.cs
- NativeMethods.cs
- MarginsConverter.cs
- ReliableOutputSessionChannel.cs
- SoapEnumAttribute.cs
- IpcClientChannel.cs
- SystemIPGlobalStatistics.cs
- PenLineCapValidation.cs
- EntityContainerEntitySetDefiningQuery.cs
- EventWaitHandle.cs
- StandardToolWindows.cs
- MatrixCamera.cs
- RoleManagerModule.cs
- TakeOrSkipQueryOperator.cs
- StateChangeEvent.cs
- DynamicValidatorEventArgs.cs
- ComEventsSink.cs
- ChangePassword.cs
- LinkArea.cs
- PassportAuthenticationEventArgs.cs
- CreateParams.cs
- GetWinFXPath.cs
- DrawingDrawingContext.cs
- PackageRelationshipSelector.cs
- NamespaceEmitter.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- XmlReflectionMember.cs
- SwitchCase.cs
- WebPartManager.cs
- NotFiniteNumberException.cs