<PackageReference Include="SSH.NET" Version="2024.1.0" />

SftpNameResponse

using System; using System.Collections.Generic; using System.Text; namespace Renci.SshNet.Sftp.Responses { internal sealed class SftpNameResponse : SftpResponse { public override SftpMessageTypes SftpMessageType => SftpMessageTypes.Name; public uint Count { get; set; } public Encoding Encoding { get; set; } public KeyValuePair<string, SftpFileAttributes>[] Files { get; set; } public SftpNameResponse(uint protocolVersion, Encoding encoding) : base(protocolVersion) { Files = Array.Empty<KeyValuePair<string, SftpFileAttributes>>(); Encoding = encoding; } protected override void LoadData() { base.LoadData(); Count = ReadUInt32(); Files = new KeyValuePair<string, SftpFileAttributes>[Count]; for (int i = 0; i < Count; i++) { string key = ReadString(Encoding); if (SupportsLongName(base.ProtocolVersion)) ReadString(Encoding); Files[i] = new KeyValuePair<string, SftpFileAttributes>(key, ReadAttributes()); } } protected override void SaveData() { base.SaveData(); Write((uint)Files.Length); for (int i = 0; i < Files.Length; i++) { KeyValuePair<string, SftpFileAttributes> keyValuePair = Files[i]; Write(keyValuePair.Key, Encoding); if (SupportsLongName(base.ProtocolVersion)) Write(0); Write(keyValuePair.Value.GetBytes()); } } private static bool SupportsLongName(uint protocolVersion) { return protocolVersion <= 3; } } }