Differences

This shows you the differences between the selected revisions of the page.

library_session_listdirectory 2012-01-13 library_session_listdirectory 2026-01-16 (current)
Line 1: Line 1:
====== Session.ListDirectory Method ====== ====== Session.ListDirectory Method ======
Lists the contents of specified remote directory. Lists the contents of specified remote directory.
- 
-&future_feature 
===== Syntax ===== ===== Syntax =====
-<code csharp> +<code csharp *
-public Collection<RemoteFileInfo> ListDirectory(string path)+public RemoteDirectoryInfo ListDirectory(string path) 
 +</code> 
 + 
 +<code vbnet *> 
 +Public Function ListDirectory(path As String) As RemoteDirectoryInfo
</code> </code>
Line 14: Line 16:
==== Return Value ==== ==== Return Value ====
-Collection of ''[[library_remotefileinfo|RemoteFileInfo]]''. +''[[library_remotedirectoryinfo|RemoteDirectoryInfo]]''.
===== Exceptions ===== ===== Exceptions =====
Line 23: Line 25:
| TimeoutException | Timeout waiting for ''winscp.com'' to respond. | | TimeoutException | Timeout waiting for ''winscp.com'' to respond. |
-===== Example =====+===== Remarks ===== 
 +You can use ''[[library_session_enumerateremotefiles|Session.EnumerateRemoteFiles]]'' method instead, if you want to: 
 + 
 +  * List only files matching a wildcard; 
 +  * List the files recursively; 
 +  * Have references to this (''.'') and parent (''..'') directories be excluded form the listing. 
 + 
 +===== [[example]] Examples ===== 
 + 
 +==== [[csharp]] C# Example ====
<code csharp> <code csharp>
using System; using System;
-using System.Collections.ObjectModel; 
using WinSCP; using WinSCP;
Line 36: Line 46:
        {         {
            // Setup session options             // Setup session options
-            SessionOptions sessionOptions = new SessionOptions(); +            SessionOptions sessionOptions = new SessionOptions 
-            sessionOptions.Protocol = Protocol.Sftp; +            { 
-           sessionOptions.HostName = "example.com"; +················Protocol = Protocol.Sftp, 
-           sessionOptions.UserName = "user"; + ···············HostName = "example.com", 
-           sessionOptions.Password = "mypassword"; + ···············UserName = "user", 
-           sessionOptions.SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx";+ ···············Password = "mypassword", 
 + ···············SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." 
 +            };
            using (Session session = new Session())             using (Session session = new Session())
Line 48: Line 60:
                session.Open(sessionOptions);                 session.Open(sessionOptions);
-                Collection<RemoteFileInfo> files = session.ListDirectory("/home/martin/public_html");+                RemoteDirectoryInfo directory = 
 + ···················session.ListDirectory("/home/martin/public_html");
-                foreach (RemoteFileInfo fileInfo in files)+                foreach (RemoteFileInfo fileInfo in directory.Files)
                {                 {
-                    Console.WriteLine("{0} with size {1}, permissions {2} and last modification at {3}", +                    Console.WriteLine( 
-                        fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions, fileInfo.LastWriteTime);+························"{0} with size {1}, permissions {2} and last modification at {3}", 
 +                        fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions, 
 + ·······················fileInfo.LastWriteTime);
                }                 }
            }             }
Line 67: Line 82:
} }
</code> </code>
 +
 +==== [[vbnet]] VB.NET Example ====
 +<code vbnet>
 +Imports WinSCP
 +
 +Friend Class Example
 +
 +    Public Shared Function Main() As Integer
 +
 +        Try
 +            ' Setup session options
 +            Dim sessionOptions As New SessionOptions
 +            With sessionOptions
 +                .Protocol = Protocol.Sftp
 +                .HostName = "example.com"
 +                .UserName = "user"
 +                .Password = "mypassword"
 +                .SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..."
 +            End With
 +
 +            Using session As New Session
 +                ' Connect
 +                session.Open(sessionOptions)
 +
 +                Dim directory As RemoteDirectoryInfo =
 +                    session.ListDirectory("/home/martin/public_html")
 +
 +                Dim fileInfo As RemoteFileInfo
 +                For Each fileInfo In directory.Files
 +                    Console.WriteLine(
 +                        "{0} with size {1}, permissions {2} and last modification at {3}",
 +                        fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions,
 +                        fileInfo.LastWriteTime)
 +                Next
 +            End Using
 +
 +            Return 0
 +        Catch e As Exception
 +            Console.WriteLine("Error: {0}", e)
 +            Return 1
 +        End Try
 +
 +    End Function
 +
 +End Class
 +</code>
 +
 +==== [[powershell]] PowerShell Example ====
 +Learn more about [[library_powershell|using WinSCP .NET assembly from PowerShell]].
 +
 +<code powershell>
 +try
 +{
 +    # Load WinSCP .NET assembly
 +    Add-Type -Path "WinSCPnet.dll"
 +
 +    # Setup session options
 +    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
 +        Protocol = [WinSCP.Protocol]::Sftp
 +        HostName = "example.com"
 +        UserName = "user"
 +        Password = "mypassword"
 +        SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..."
 +    }
 +
 +    $session = New-Object WinSCP.Session
 +
 +    try
 +    {
 +        # Connect
 +        $session.Open($sessionOptions)
 +
 +        $directory = $session.ListDirectory("/home/martin/public_html")
 +
 +        foreach ($fileInfo in $directory.Files)
 +        {
 +            Write-Host ("$($fileInfo.Name) with size $($fileInfo.Length), " +
 +                "permissions $($fileInfo.FilePermissions) and " +
 +                "last modification at $($fileInfo.LastWriteTime)")
 +        }
 +    }
 +    finally
 +    {
 +        # Disconnect, clean up
 +        $session.Dispose()
 +    }
 +
 +    exit 0
 +}
 +catch
 +{
 +    Write-Host "Error: $($_.Exception.Message)"
 +    exit 1
 +}
 +</code>
 +
 +
 +==== [[jscript]] JScript (WSH) Example ====
 +In this example the JScript script is embedded into WSF file, to allow [[library_com_wsh#enums|access to enumeration values]].
 +
 +<code javascript>
 +<job>                                                             
 +<reference object="WinSCP.Session" />
 +<script language="JScript">
 +
 +try
 +{
 +    // Setup session options
 +    var sessionOptions = WScript.CreateObject("WinSCP.SessionOptions");
 +    sessionOptions.Protocol = Protocol_Sftp;
 +    sessionOptions.HostName = "example.com";
 +    sessionOptions.UserName = "user";
 +    sessionOptions.Password = "mypassword";
 +    sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...";
 +   
 +    var session = WScript.CreateObject("WinSCP.Session");
 +
 +    try
 +    {
 +        // Connect
 +        session.Open(sessionOptions);
 +
 +        var directoryInfo = session.ListDirectory("/home/martin/public_html")
 +           
 +        var enumerator = new Enumerator(directoryInfo.Files);
 +        for (; !enumerator.atEnd(); enumerator.moveNext())
 +        {
 +            var fileInfo = enumerator.item();
 +            WScript.Echo(
 +                fileInfo.Name + " with size " + fileInfo.Length +
 +                ", permissions " + fileInfo.FilePermissions +
 +                " and last modification at " + fileInfo.LastWriteTime);
 +        }
 +    }
 +    finally
 +    {
 +        // Disconnect, clean up
 +        session.Dispose();
 +    }
 +}
 +catch (e)
 +{
 +    WScript.Echo("Error: " + e.message);
 +    WScript.Quit(1);
 +}
 +
 +</script>
 +</job>
 +</code>
 +
 +
 +==== [[vbscript]] VBScript (WSH) Example ====
 +In this example the VBScript script is embedded into WSF file, to allow [[library_com_wsh#enums|access to enumeration values]].
 +
 +<code vb>
 +<job>                                                             
 +<reference object="WinSCP.Session" />
 +<script language="VBScript">
 +
 +Option Explicit
 +
 +' Setup session options
 +Dim sessionOptions
 +Set sessionOptions = WScript.CreateObject("WinSCP.SessionOptions")
 +With sessionOptions
 +    .Protocol = Protocol_Sftp
 +    .HostName = "example.com"
 +    .UserName = "user"
 +    .Password = "mypassword"
 +    .SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..."
 +End With
 +
 +Dim session
 +Set session = WScript.CreateObject("WinSCP.Session")
 +
 +' Connect
 +session.Open sessionOptions
 +
 +Dim directoryInfo
 +Set directoryInfo = session.ListDirectory("/home/martin/public_html")
 +
 +Dim fileInfo
 +For Each fileInfo In directoryInfo.Files
 +    WScript.Echo fileInfo.Name & " with size " & fileInfo.Length & _
 +        ", permissions " & fileInfo.FilePermissions & _
 +        " and last modification at " & fileInfo.LastWriteTime
 +Next
 +
 +' Disconnect, clean up
 +session.Dispose
 +
 +</script>
 +</job>
 +</code>
 +
 +==== Real-Life Examples ====
 +
 +  * [[script_download_most_recent_file|*]];
 +  * [[script_custom_listing_format_csv|*]].
 +

Last modified: by martin