使用SharpSSH从SFTP获取文件大小
我使用SharpSSH将本地目录中的zip文件上传到SFTP。一切正常。 但是,我想获取刚刚上传的当前文件的文件大小。我这样做的原因是压缩文件很大(从45 GB到80 GB),我想确保在上传过程中没有失败或卡住。要确保整个邮编上传。使用SharpSSH从SFTP获取文件大小
我能得到当地的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问题的答案Download file based on date modified from SFTP。
虽然SharpSSH是一条走不通的项目,你应该使用其他SFTP库:
SSH.NET有方法
SftpClient.ListDirectory
返回IEnumerable<SftpFile>
。SftpFile
具有.Length
属性;WinSCP .NET assembly具有方法
Session.ListDirectory
返回(通过RemoteDirectoryInfo.Files
)的RemoteFileInfo
与属性.Length
的集合。
(我的WinSCP .NET程序集的作者)
我会接受这个aswer,因为我别无选择,只能切换图书馆。我和[Kellerman Software]一起去了(http://www.kellermansoftware.com/p-41-net-sftp-library.aspx?mode=Specifications&)。谢谢。 – smr5 2014-09-25 19:46:28
当你有一个SSH连接,我想你可以像在远程服务器上'ls'执行命令。这里有一个例子(虽然它涉及的东西略有不同):[如何使用SharpSSH执行linux命令,提示输入额外的输入?](http://*.com/questions/9857788/how-to-use- sharpssh换执行-Linux的命令 - 其中的提示换产生额外-INP)。 – 2014-09-24 19:40:21