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
- Executor.cs
- PtsCache.cs
- WebConfigManager.cs
- EntityWrapper.cs
- HtmlButton.cs
- TraceSwitch.cs
- DataGridViewAccessibleObject.cs
- ParentQuery.cs
- FontInfo.cs
- SystemColors.cs
- XmlWriterTraceListener.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- CurrentChangingEventArgs.cs
- BamlRecords.cs
- XmlSiteMapProvider.cs
- HttpCapabilitiesBase.cs
- BuildProviderAppliesToAttribute.cs
- BordersPage.cs
- MultiView.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- BamlWriter.cs
- XmlSchemaAttributeGroupRef.cs
- ObjectReaderCompiler.cs
- SafeFileMappingHandle.cs
- MethodInfo.cs
- TextDocumentView.cs
- DataGridAddNewRow.cs
- TokenizerHelper.cs
- Token.cs
- CapabilitiesState.cs
- WithParamAction.cs
- OperationAbortedException.cs
- XmlSchemaGroup.cs
- ActiveXSite.cs
- DiscoveryReference.cs
- LoginUtil.cs
- EditorZoneBase.cs
- RemotingClientProxy.cs
- PowerStatus.cs
- WebServiceMethodData.cs
- Resources.Designer.cs
- WSHttpTransportSecurityElement.cs
- SwitchAttribute.cs
- SqlBooleanMismatchVisitor.cs
- RuntimeArgumentHandle.cs
- VirtualDirectoryMappingCollection.cs
- HttpHandlerActionCollection.cs
- IsolatedStorageFileStream.cs
- ComEventsSink.cs
- CustomAttributeFormatException.cs
- EngineSiteSapi.cs
- SerTrace.cs
- TextFindEngine.cs
- Point3DAnimation.cs
- XmlDataSourceNodeDescriptor.cs
- ObservableCollection.cs
- ExceptionUtil.cs
- DBConcurrencyException.cs
- Exceptions.cs
- ButtonChrome.cs
- HtmlMobileTextWriter.cs
- StringComparer.cs
- GPPOINTF.cs
- DataGridTextBox.cs
- UpdateExpressionVisitor.cs
- Grid.cs
- HttpProtocolReflector.cs
- NodeFunctions.cs
- ElementUtil.cs
- Missing.cs
- SHA1Managed.cs
- DynamicMetaObject.cs
- TraceHandler.cs
- XdrBuilder.cs
- HttpChannelBindingToken.cs
- Brush.cs
- DocumentEventArgs.cs
- JsonMessageEncoderFactory.cs
- IntermediatePolicyValidator.cs
- CompletedAsyncResult.cs
- XmlSchemaObjectTable.cs
- SchemaImporterExtension.cs
- ClientFormsAuthenticationCredentials.cs
- RevocationPoint.cs
- MediaPlayer.cs
- LambdaExpression.cs
- TextEffectCollection.cs
- WindowsFont.cs
- DBPropSet.cs
- SqlRecordBuffer.cs
- CacheSection.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- NetTcpSecurityElement.cs
- Deflater.cs
- DrawingContextDrawingContextWalker.cs
- PermissionListSet.cs
- ComponentRenameEvent.cs
- ClientType.cs
- OleDbEnumerator.cs
- OperationInfoBase.cs