EndGetDownloadStream Method
The following example demonstrates how to use the BeginGetDownloadStream%M:Xceed.Ftp.AsyncFtpClient.EndGetDownloadStream(System.IAsyncResult)%
methods to display the content of a text file.
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs )
Dim ftp As New AsyncFtpClient()
Dim result As IAsyncResult = ftp.BeginConnect( "ftp.server.com", Nothing, Nothing )
While Not result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndConnect( result )
result = ftp.BeginLogin( Nothing, Nothing )
While Not result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndLogin( result )
result = ftp.BeginGetDownloadStream( "test.txt", 0, New AsyncCallback( AddressOf Me.end_download ), ftp )
While Not result.IsCompleted
Application.DoEvents()
WEnd
result = ftp.BeginDisconnect( Nothing, Nothing )
While Not result.IsCompleted
Application.DoEvents()
WEnd
ftp.EndDisconnect( result )
End Sub
Private Sub end_download( ByVal result As IAsyncResult )
Dim client As AsyncFtpClient = result.AsyncState
Try
Dim stream As System.IO.Stream = client.EndGetDownloadStream( result )
Dim buffer(32768) As Byte
Dim bytesRead As Integer = 0
' Loop until we have nothing more to read from the source stream.
' We are assuming that the data contained in the file is text
Dim data As String = string.Empty
Do
bytesRead = stream.Read(buffer, 0, buffer.Length)
If bytesRead > 0 Then
data += System.Text.Encoding.ASCII.GetString( buffer )
End If
Loop Until bytesRead = 0
System.Diagnostics.Debug.WriteLine( data )
stream.Close()
Catch exception As Exception
System.Diagnostics.Debug.WriteLine( exception.Message )
End Try
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
AsyncFtpClient ftp = new AsyncFtpClient();
IAsyncResult result = ftp.BeginConnect( "ftp.server.com", null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndConnect( result );
result = ftp.BeginLogin( null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndLogin( result );
result = ftp.BeginGetDownloadStream( "test.txt", 0, new AsyncCallback( this.end_download ), ftp );
while( !result.IsCompleted )
Application.DoEvents();
result = ftp.BeginDisconnect( null, null );
while( !result.IsCompleted )
Application.DoEvents();
ftp.EndDisconnect( result );
}
private void end_download( IAsyncResult result )
{
AsyncFtpClient client = result.AsyncState as AsyncFtpClient;
try
{
using( System.IO.Stream stream = client.EndGetDownloadStream( result ) )
{
byte[] buffer = new byte[ 32768 ];
int bytesRead = 0;
// Loop until we have nothing more to read from the source stream.
// We are assuming that the data contained in the file is text
string data = string.Empty;
while( ( bytesRead = stream.Read( buffer, 0, buffer.Length ) ) > 0 )
{
data += System.Text.Encoding.ASCII.GetString( buffer );
}
System.Diagnostics.Debug.WriteLine( data );
}
}
catch( Exception exception )
{
System.Diagnostics.Debug.WriteLine( exception.Message );
}
}
.NET: net5.0, net5.0-windows, net6.0, net6.0-macos, net6.0-windows, net7.0, net7.0-macos, net7.0-windows, net8.0, net8.0-browser, net8.0-macos, net8.0-windows, net9.0, net9.0-browser, net9.0-macos, net9.0-windows, net10.0, net10.0-browser, net10.0-macos, net10.0-windows.
.NET Standard: netstandard2.0, netstandard2.1
.NET Framework: net20, net35, net40, net403, net45, net451, net452, net46, net461, net462, net463, net47, net471, net472, net48, net481.