使用SharpSSH从SFTP获取文件大小

我正在使用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不允许这样做。 但是你可以编写代码,因为SharpSSH是开源的。

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


虽然SharpSSH是一个死的项目,但你应该使用另一个SFTP库:

  • SSH.NET的方法SftpClient.ListDirectory返回IEnumerableSftpFile具有SftpFile属性;

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