Search code examples
c#sftpwinscpdirectory-listingwinscp-net

List files with specific extension using WinSCP .NET assembly


I am using WinSCP .NET assembly to do a download and upload through SFTP with C# .NET. I have the download function working but I am looking for a way to have the files in the remote server listed (or at least listed with a specific extension) so user only have to choose from those files with the specific extension (like .txt) to get the files they want.

Is there a way to do that with WinSCP .NET assembly?


Solution

  • Use the Session.ListDirectories method:

    RemoteDirectoryInfo directory = session.ListDirectory("/home/martin");
    
    foreach (RemoteFileInfo fileInfo in directory.Files)
    {
        string extension = Path.GetExtension(fileInfo.Name);
        if (string.Compare(extension, ".txt", true) == 0)
        {
            Console.WriteLine("Adding {0} to listing", fileInfo.Name);
        }
    }
    

    Or the Session.EnumerateRemoteFiles method:

    IEnumerable<RemoteFileInfo> fileInfos =
        session.EnumerateRemoteFiles("/home/martin", "*.txt", EnumerationOptions.None);
    foreach (RemoteFileInfo fileInfo in fileInfos)
    {
        Console.WriteLine("Adding {0} to listing", fileInfo.Name);
    }