使用SharpSSH从SFTP获取文件大小

本文关键字:获取 文件大小 SFTP SharpSSH 使用 | 更新日期: 2023-09-27 18:24:11

我正在使用SharpSSH将一个zip文件从本地目录上传到SFTP。一切都很好。然而,我想得到我刚刚上传的当前文件的文件大小。我这样做的原因是zip文件很大(从45 GB到80 GB),我想确保在上传过程中它不会失败或卡住。希望确保整个zip都已上传。

我可以获得本地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这样的属性来获取该文件的文件大小?

有没有其他方法可以用来找出远程服务器中文件的文件大小?

使用SharpSSH从SFTP获取文件大小

SharpSSH不允许这样做。但是您可以将其编码为SharpSSH是开源的。

请参阅我对另一个SharpSSH问题的回答根据SFTP修改的日期下载文件。


尽管SharpSSH是一个死项目,但您应该使用另一个SFTP库:

  • SSH.NET具有返回CCD_ 5的方法CCD_。SftpFile具有.Length性质;

  • NET程序集的方法Session.ListDirectory(通过RemoteDirectoryInfo.Files)返回属性为.LengthRemoteFileInfo的集合
    (我是WinSCP.NET程序集的作者)