Получить размер файла из SFTP с помощью SharpSSH
Я загружаю zip-файл из локального каталога в SFTP, используя SharpSSH. Все отлично работает Тем не менее, я хотел бы получить размер текущего загруженного файла. Причина, по которой я это делаю, заключается в том, что zip-файл большой (от 45 до 80 ГБ), и я хочу убедиться, что во время загрузки он не вышел из строя или не завис. Хотите убедиться, что весь почтовый индекс загружен.
Я могу получить размер локального zip-файла следующим образом:
DirectoryInfo di = new DirectoryInfo(yesterdaysArchiveFolder);
FileInfo[] files = di.GetFiles();
foreach (FileInfo f in files)
{
Console.WriteLine("Size of the zip file: " + f.Length);
}
Теперь я хочу сделать то же самое для файла, который я только что загрузил в SFTP после завершения загрузки.
Так как я знаю имя файла, который я только что загрузил, я создаю ArrayList
и положить файлы из SFTP. Я тогда использую for loop
чтобы получить файл, который я только что загрузил.
ArrayList FileList = oSftp.GetFileList(_ftpDirectory);
int count = FileList.Count;
Console.WriteLine("Files in SFTP: " + count);
for (int i = 0; i < FileList.Count; i++)
{
if (zipFileName == FileList[i].ToString())
{
Console.WriteLine(FileList[i]);
}
}
Проблема в том, что нет таких свойств, как .Length
получить размер файла этого файла?
Есть ли другой подход, который я могу использовать, чтобы узнать размер файла на удаленном сервере?
1 ответ
SharpSSH не позволяет этого. Но вы можете закодировать его как SharpSSH с открытым исходным кодом.
Смотрите мой ответ на другой вопрос SharpSSH. Загрузите файл на основе даты, измененной из SFTP.
Хотя SharpSSH - мертвый проект, вы должны использовать другую библиотеку SFTP:
У SSH.NET есть метод
SftpClient.ListDirectory
возвращаяIEnumerable<SftpFile>
,SftpFile
имеет.Length
имущество;Сборка WinSCP .NET имеет метод
Session.ListDirectory
возвращение (черезRemoteDirectoryInfo.Files
) коллекцияRemoteFileInfo
с собственностью.Length
,
(Я автор сборки WinSCP .NET)