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
- CodeAccessSecurityEngine.cs
- SqlRowUpdatedEvent.cs
- TraceUtils.cs
- DataSetMappper.cs
- Baml6ConstructorInfo.cs
- XPathChildIterator.cs
- FileDataSourceCache.cs
- DbMetaDataFactory.cs
- LayoutExceptionEventArgs.cs
- SiteMapNodeItemEventArgs.cs
- ContentValidator.cs
- SqlDataSourceView.cs
- WindowPatternIdentifiers.cs
- PageAsyncTask.cs
- ThrowHelper.cs
- AppLevelCompilationSectionCache.cs
- MailBnfHelper.cs
- StringUtil.cs
- WebPartCollection.cs
- DataGridViewButtonColumn.cs
- MatcherBuilder.cs
- Filter.cs
- PackageRelationshipSelector.cs
- MultipleViewProviderWrapper.cs
- XmlSchemaAnnotated.cs
- CharStorage.cs
- HybridWebProxyFinder.cs
- ServiceDeploymentInfo.cs
- SecureConversationServiceElement.cs
- DecoderFallback.cs
- XmlSchemaImporter.cs
- HttpValueCollection.cs
- XamlHostingSectionGroup.cs
- BitmapInitialize.cs
- RefreshEventArgs.cs
- InputLangChangeRequestEvent.cs
- MarkedHighlightComponent.cs
- DiscreteKeyFrames.cs
- StorageAssociationSetMapping.cs
- SqlDataReaderSmi.cs
- DynamicValidator.cs
- PropertyPushdownHelper.cs
- TypeDependencyAttribute.cs
- Package.cs
- XmlSchemaExternal.cs
- UInt32Storage.cs
- PointCollectionValueSerializer.cs
- BitmapSource.cs
- ItemCheckEvent.cs
- PropertyPath.cs
- WebBrowserPermission.cs
- WindowsHyperlink.cs
- MemberCollection.cs
- DashStyles.cs
- EventLogReader.cs
- PageStatePersister.cs
- XmlReflectionImporter.cs
- ListDictionaryInternal.cs
- JpegBitmapEncoder.cs
- AutomationPattern.cs
- ProxyGenerator.cs
- WmlPageAdapter.cs
- PinnedBufferMemoryStream.cs
- AnnotationMap.cs
- RuleInfoComparer.cs
- CollectionChangedEventManager.cs
- GeometryGroup.cs
- FlowThrottle.cs
- SynchronizingStream.cs
- ToolStripItemImageRenderEventArgs.cs
- WebControlParameterProxy.cs
- RowVisual.cs
- MethodBody.cs
- BaseTemplateCodeDomTreeGenerator.cs
- RequestCacheValidator.cs
- RectKeyFrameCollection.cs
- OpacityConverter.cs
- ImpersonationContext.cs
- EmbeddedMailObjectsCollection.cs
- CompressionTransform.cs
- CultureSpecificCharacterBufferRange.cs
- DateTimeFormat.cs
- URLIdentityPermission.cs
- QueryStringParameter.cs
- DataKey.cs
- Color.cs
- Int64.cs
- TemplateControlCodeDomTreeGenerator.cs
- CollectionChangedEventManager.cs
- SafeHandle.cs
- AnnotationDocumentPaginator.cs
- ListBoxItemWrapperAutomationPeer.cs
- keycontainerpermission.cs
- BindingList.cs
- EncoderBestFitFallback.cs
- EndpointDiscoveryMetadata11.cs
- ResXFileRef.cs
- ThreadStartException.cs
- PageParserFilter.cs
- HtmlControl.cs