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
- FeatureSupport.cs
- CollectionBase.cs
- ExtenderProvidedPropertyAttribute.cs
- listviewsubitemcollectioneditor.cs
- CultureNotFoundException.cs
- DelegateArgumentReference.cs
- WebRequest.cs
- ListItem.cs
- SpellerStatusTable.cs
- Scheduling.cs
- TreeIterator.cs
- XmlValidatingReader.cs
- IteratorFilter.cs
- BuildManager.cs
- cookiecollection.cs
- CompModSwitches.cs
- XNodeNavigator.cs
- DataGridViewHitTestInfo.cs
- SqlUDTStorage.cs
- SqlPersonalizationProvider.cs
- MetadataCacheItem.cs
- XmlDownloadManager.cs
- FileDialogPermission.cs
- XmlSchemaAttributeGroup.cs
- URI.cs
- CreateDataSourceDialog.cs
- OdbcCommand.cs
- Listbox.cs
- StyleSelector.cs
- PrincipalPermission.cs
- OleDbDataAdapter.cs
- ClearTypeHintValidation.cs
- DelegatingTypeDescriptionProvider.cs
- RangeValidator.cs
- SpeakCompletedEventArgs.cs
- SettingsPropertyIsReadOnlyException.cs
- RemoteWebConfigurationHostServer.cs
- SharedPersonalizationStateInfo.cs
- ServiceEndpointElement.cs
- WebContext.cs
- CatalogPartCollection.cs
- ManagementQuery.cs
- String.cs
- CaseInsensitiveHashCodeProvider.cs
- MarginsConverter.cs
- HttpRequestCacheValidator.cs
- ModulesEntry.cs
- DataGridColumnHeader.cs
- ValidatorCompatibilityHelper.cs
- HttpRequest.cs
- CapabilitiesUse.cs
- TextTreeFixupNode.cs
- PEFileReader.cs
- ObjectFullSpanRewriter.cs
- NonBatchDirectoryCompiler.cs
- DiscreteKeyFrames.cs
- PersonalizableAttribute.cs
- MetadataCache.cs
- DetailsViewRow.cs
- EntityClientCacheKey.cs
- CodeAccessPermission.cs
- StructuredTypeInfo.cs
- DataServiceException.cs
- XmlnsDictionary.cs
- DropSource.cs
- ResponseBodyWriter.cs
- AutomationPeer.cs
- KeysConverter.cs
- DesignerView.cs
- BitmapDecoder.cs
- CngAlgorithmGroup.cs
- ACL.cs
- CodeDomSerializerBase.cs
- CheckBoxBaseAdapter.cs
- ReturnEventArgs.cs
- WindowsStatic.cs
- ClientData.cs
- TypeValidationEventArgs.cs
- WorkflowOwnerAsyncResult.cs
- PersistenceIOParticipant.cs
- KeyBinding.cs
- DispatcherExceptionEventArgs.cs
- Int64Storage.cs
- WebPartActionVerb.cs
- SettingsSavedEventArgs.cs
- RSAPKCS1SignatureFormatter.cs
- ComponentSerializationService.cs
- ThemeableAttribute.cs
- Error.cs
- WebPartExportVerb.cs
- TextServicesPropertyRanges.cs
- PlaceHolder.cs
- WebPartsPersonalizationAuthorization.cs
- loginstatus.cs
- Help.cs
- XmlComment.cs
- GenericPrincipal.cs
- StackBuilderSink.cs
- XmlArrayItemAttribute.cs
- AttributeProviderAttribute.cs