Session.ListDirectory Method
Lists the contents of specified remote directory.
Advertisement
Syntax
C#
public RemoteDirectoryInfo ListDirectory(string path)
VB.NET
Public Function ListDirectory(path As String) As RemoteDirectoryInfo
Parameters
| Name | Description |
|---|---|
| string path | Full path to remote directory to be read. |
Return Value
Exceptions
| Exception | Condition |
|---|---|
| InvalidOperationException | Session is not opened. |
| SessionLocalException | Error communicating with winscp.com. See the exception documentation for details. |
| SessionRemoteException | Session has failed. Listing of remote directory has failed. See the exception documentation for details. |
| TimeoutException | Timeout waiting for winscp.com to respond. |
Advertisement
Remarks
You can use 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.
Examples
C# Example
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; } } }
Advertisement
VB.NET Example
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
PowerShell Example
Learn more about using WinSCP .NET assembly from PowerShell.
Advertisement
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 }
JScript (WSH) Example
In this example the JScript script is embedded into WSF file, to allow access to enumeration values.
Advertisement
<job> <reference object=