Differences

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

library_session_listdirectory 2011-12-29 library_session_listdirectory 2026-01-16 (current)
Line 3: Line 3:
===== Syntax ===== ===== Syntax =====
-<code> +<code csharp *
-public List<RemoteFileInfo> ListDirectory(string path)+public RemoteDirectoryInfo ListDirectory(string path) 
 +</code> 
 + 
 +<code vbnet *> 
 +Public Function ListDirectory(path As String) As RemoteDirectoryInfo
</code> </code>
Line 12: Line 16:
==== Return Value ==== ==== Return Value ====
-Collection of ''[[library_remotefileinfo|RemoteFileInfo]]''. +''[[library_remotedirectoryinfo|RemoteDirectoryInfo]]''.
===== Exceptions ===== ===== Exceptions =====
Line 21: Line 25:
| TimeoutException | Timeout waiting for ''winscp.com'' to respond. | | TimeoutException | Timeout waiting for ''winscp.com'' to respond. |
-~~NOTOC~~+===== 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> 
 +using System; 
 +using WinSCP; 
 + 
 +class Example 
 +
 +    public static int Main() 
 +    { 
 +        try 
 +        { 
 +            // Setup session options 
 +            SessionOptions sessionOptions = new SessionOptions 
 +            { 
 +                Protocol = Protocol.Sftp, 
 +                HostName = "example.com", 
 +                UserName = "user", 
 +                Password = "mypassword", 
 +                SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." 
 +            }; 
 + 
 +            using (Session session = new Session()) 
 +            { 
 +                // Connect 
 +                session.Open(sessionOptions); 
 + 
 +                RemoteDirectoryInfo directory = 
 +                    session.ListDirectory("/home/martin/public_html"); 
 + 
 +                foreach (RemoteFileInfo 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); 
 +                } 
 +            } 
 + 
 +            return 0;   
 +        } 
 +        catch (Exception e) 
 +        { 
 +            Console.WriteLine("Error: {0}", e); 
 +            return 1; 
 +        } 
 +    } 
 +
 +</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