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

SftpFileAttributes

public class SftpFileAttributes
Contains SFTP file attributes.
namespace Renci.SshNet.Compression { public abstract class Compressor : Algorithm, IDisposable { private readonly bool _delayedCompression; private bool _isActive; private Session _session; private bool _isDisposed; protected Compressor(bool delayedCompression) { base..ctor(); _delayedCompression = delayedCompression; } public virtual void Init(Session session) { if (_delayedCompression) { _session = session; _session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived; } else { _isActive = true; } } public byte[] Compress(byte[] data) { return Compress(data, 0, data.Length); } public virtual byte[] Compress(byte[] data, int offset, int length) { if (!_isActive) { if (offset == 0 && length == data.Length) return data; array = new byte[length]; Buffer.BlockCopy(data, offset, array, 0, length); return array; } return CompressCore(data, offset, length); } protected abstract byte[] CompressCore(byte[] data, int offset, int length); public byte[] Decompress(byte[] data) { return Decompress(data, 0, data.Length); } public virtual byte[] Decompress(byte[] data, int offset, int length) { if (!_isActive) { if (offset == 0 && length == data.Length) return data; array = new byte[length]; Buffer.BlockCopy(data, offset, array, 0, length); return array; } return DecompressCore(data, offset, length); } protected abstract byte[] DecompressCore(byte[] data, int offset, int length); private void Session_UserAuthenticationSuccessReceived(object sender, MessageEventArgs<SuccessMessage> e) { _isActive = true; _session.UserAuthenticationSuccessReceived -= Session_UserAuthenticationSuccessReceived; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_isDisposed && disposing) { _isDisposed = true; } } } }