使用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
返回IEnumerable
。SftpFile
具有SftpFile
属性; -
WinSCP .NET程序集具有
Session.ListDirectory
方法(通过RemoteDirectoryInfo.Files
)返回具有属性RemoteFileInfo
的集合。
(我是WinSCP .NET程序集的作者)