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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ELinqQueryState.cs
- TextModifier.cs
- UInt16Storage.cs
- EventPrivateKey.cs
- CheckBoxList.cs
- Hashtable.cs
- SamlAuthorityBinding.cs
- TailPinnedEventArgs.cs
- FragmentQueryProcessor.cs
- UserControl.cs
- DataSpaceManager.cs
- ToolboxComponentsCreatingEventArgs.cs
- ByeOperationAsyncResult.cs
- EventRouteFactory.cs
- X509Certificate2.cs
- MoveSizeWinEventHandler.cs
- SimpleMailWebEventProvider.cs
- ReferencedCollectionType.cs
- Visitors.cs
- ContextMenu.cs
- HwndMouseInputProvider.cs
- TextureBrush.cs
- SpnEndpointIdentity.cs
- GridViewItemAutomationPeer.cs
- MediaPlayerState.cs
- XmlDeclaration.cs
- PropertyInfo.cs
- RealProxy.cs
- DependencyPropertyKey.cs
- TypeResolver.cs
- LayoutEditorPart.cs
- DefaultExpressionVisitor.cs
- XmlQueryContext.cs
- PeerCollaboration.cs
- BoundPropertyEntry.cs
- mediaeventshelper.cs
- OptimalTextSource.cs
- ForEachAction.cs
- NullReferenceException.cs
- DesignTimeParseData.cs
- DocumentCollection.cs
- Size3DConverter.cs
- EDesignUtil.cs
- QuotaThrottle.cs
- MonitorWrapper.cs
- HttpWriter.cs
- CharacterBufferReference.cs
- CodeActivity.cs
- WebPartMenuStyle.cs
- ManipulationCompletedEventArgs.cs
- SqlGatherConsumedAliases.cs
- UserPreferenceChangedEventArgs.cs
- CodeFieldReferenceExpression.cs
- RecommendedAsConfigurableAttribute.cs
- ApplicationFileParser.cs
- SplitterEvent.cs
- HttpDebugHandler.cs
- AvtEvent.cs
- FilterableAttribute.cs
- ScriptControlDescriptor.cs
- TreeNode.cs
- AttachedPropertyMethodSelector.cs
- APCustomTypeDescriptor.cs
- ScalarType.cs
- PlanCompiler.cs
- FixedSOMImage.cs
- GroupJoinQueryOperator.cs
- PerspectiveCamera.cs
- SqlFunctionAttribute.cs
- ResourceContainer.cs
- Point.cs
- BindingMemberInfo.cs
- DataKeyCollection.cs
- ZipIOExtraFieldZip64Element.cs
- AuthorizationRule.cs
- WindowsToolbar.cs
- RegistrationServices.cs
- ImportException.cs
- ControlPaint.cs
- DebugView.cs
- HtmlInputSubmit.cs
- DefaultBinder.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- Int64Animation.cs
- serverconfig.cs
- SignedPkcs7.cs
- UnmanagedMemoryStreamWrapper.cs
- LinqTreeNodeEvaluator.cs
- SecureUICommand.cs
- AspProxy.cs
- ExternalException.cs
- DateTimeSerializationSection.cs
- RootBuilder.cs
- XmlHelper.cs
- GeneralTransform2DTo3D.cs
- MessageQueueException.cs
- NetTcpBindingElement.cs
- AncillaryOps.cs
- Console.cs
- ChangePassword.cs