VB.NET || How To Manually Copy Two Streams From One To Another Using VB.NET
The following is a module with functions which demonstrates how to manually copy two steams from one to another using VB.NET.
1. Manually Copy Stream
The example below demonstrates the use of ‘Utils.CopyStream‘ to copy two streams.
1 2 3 4 5 6 7 |
' Manually Copy Stream Dim stream1 As System.IO.Stream Dim stream2 As System.IO.Stream ' Copy stream1 to stream2 Utils.CopyStream(stream1, stream2) |
2. Utils Namespace
The following is the Utils Namespace. Include this in your project to start using!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
' ============================================================================ ' Author: Kenneth Perkins ' Date: Nov 24, 2020 ' Taken From: http://programmingnotes.org/ ' File: Utils.vb ' Description: Handles general utility functions ' ============================================================================ Option Strict On Option Explicit On Namespace Global.Utils Public Module modUtils ''' <summary> ''' Reads bytes from the 'streamFrom' and writes them to 'streamTo' ''' </summary> ''' <param name="streamFrom">The source stream</param> ''' <param name="streamTo">The destination stram</param> ''' <returns>The total bytes written</returns> <Runtime.CompilerServices.Extension()> Public Function CopyStream(streamFrom As System.IO.Stream, streamTo As System.IO.Stream, Optional bufferSize As Integer = 4096) As Integer Dim bytesWritten As Integer = 0 Dim bytBuffer(bufferSize - 1) As Byte Dim bytesRead As Integer = 0 Dim tempPos = If(streamFrom.CanSeek, CType(streamFrom.Position, Integer?), Nothing) If streamFrom.CanSeek Then streamFrom.Position = 0 Do bytesRead = streamFrom.Read(bytBuffer, 0, bytBuffer.Length) If bytesRead > 0 Then streamTo.Write(bytBuffer, 0, bytesRead) bytesWritten += bytesRead End If Loop While bytesRead > 0 If tempPos.HasValue Then streamFrom.Position = tempPos.Value Return bytesWritten End Function End Module End Namespace ' http://programmingnotes.org/ |
3. More Examples
Below are more examples demonstrating the use of the ‘Utils‘ Namespace. Don’t forget to include the module when running the examples!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
' ============================================================================ ' Author: Kenneth Perkins ' Date: Nov 24, 2020 ' Taken From: http://programmingnotes.org/ ' File: Program.vb ' Description: The following demonstrates the use of the Utils Namespace ' ============================================================================ Option Strict On Option Explicit On Imports System Module Program Sub Main(args As String()) Try Dim stream1 As System.IO.Stream Dim stream2 As System.IO.Stream ' Copy stream1 to stream2 Utils.CopyStream(stream1, stream2) Catch ex As Exception Display(ex.ToString) Finally Console.ReadLine() End Try End Sub Public Sub Display(message As String) Console.WriteLine(message) Debug.Print(message) End Sub End Module ' http://programmingnotes.org/ |
QUICK NOTES:
The highlighted lines are sections of interest to look out for.
The code is heavily commented, so no further insight is necessary. If you have any questions, feel free to leave a comment below.
Leave a Reply