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
- ContextBase.cs
- DateTimeOffsetStorage.cs
- SmiMetaData.cs
- UInt32Storage.cs
- DataPagerFieldItem.cs
- MailHeaderInfo.cs
- SafeRightsManagementSessionHandle.cs
- OSFeature.cs
- ResourcesGenerator.cs
- ToolStripRenderer.cs
- HandledEventArgs.cs
- AspCompat.cs
- Triplet.cs
- TransportContext.cs
- ArgumentFixer.cs
- EntityDataSourceDataSelection.cs
- DbConnectionStringCommon.cs
- ColorAnimation.cs
- MonikerProxyAttribute.cs
- ProfilePropertyNameValidator.cs
- CompositeActivityDesigner.cs
- SynchronizedDispatch.cs
- RuntimeArgumentHandle.cs
- PermissionAttributes.cs
- MultiAsyncResult.cs
- KnownTypes.cs
- DecoderBestFitFallback.cs
- Utils.cs
- URI.cs
- WrappedOptions.cs
- listitem.cs
- SchemaTypeEmitter.cs
- SmiRequestExecutor.cs
- NumericUpDownAcceleration.cs
- TextEffect.cs
- DesignerVerbCollection.cs
- SafeRegistryKey.cs
- SizeAnimationBase.cs
- EmptyStringExpandableObjectConverter.cs
- AnnotationObservableCollection.cs
- ValidatingPropertiesEventArgs.cs
- DbProviderFactory.cs
- RequestCacheValidator.cs
- smtppermission.cs
- EventItfInfo.cs
- XamlPointCollectionSerializer.cs
- XPathDescendantIterator.cs
- PointAnimationClockResource.cs
- CacheChildrenQuery.cs
- EntityContainerRelationshipSetEnd.cs
- DesignerForm.cs
- CompilerCollection.cs
- StreamingContext.cs
- ConfigXmlSignificantWhitespace.cs
- ToolBarPanel.cs
- CodeGenerationManager.cs
- SelectingProviderEventArgs.cs
- WizardPanel.cs
- ButtonRenderer.cs
- ConfigurationStrings.cs
- X509AsymmetricSecurityKey.cs
- HeaderedItemsControl.cs
- CodeGenerator.cs
- StorageTypeMapping.cs
- HotCommands.cs
- ManagementClass.cs
- ExpressionLink.cs
- Point3D.cs
- DateTimeConstantAttribute.cs
- ProtocolsConfigurationEntry.cs
- PropertyBuilder.cs
- PromptEventArgs.cs
- OLEDB_Enum.cs
- ManipulationLogic.cs
- PropertyGridCommands.cs
- FilteredReadOnlyMetadataCollection.cs
- CodeNamespaceImport.cs
- LinqToSqlWrapper.cs
- UserNamePasswordValidator.cs
- ProcessRequestArgs.cs
- NameValueCollection.cs
- InstancePersistence.cs
- FlowDocumentPageViewerAutomationPeer.cs
- ViewStateModeByIdAttribute.cs
- EventTrigger.cs
- MetadataException.cs
- ConsoleTraceListener.cs
- HostAdapter.cs
- Triangle.cs
- GridViewItemAutomationPeer.cs
- ObjectContextServiceProvider.cs
- Int16AnimationUsingKeyFrames.cs
- DataBindingCollectionEditor.cs
- KeyboardNavigation.cs
- DeploymentSection.cs
- SortedDictionary.cs
- DecimalConverter.cs
- BaseAutoFormat.cs
- TemplateControl.cs
- DelegatingTypeDescriptionProvider.cs