2014-09-24 30 views
2

我使用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那样的属性来获取该文件的文件大小?

是否有另一种方法可以找出远程服务器中文件的文件大小?

+0

当你有一个SSH连接,我想你可以像在远程服务器上'ls'执行命令。这里有一个例子(虽然它涉及的东西略有不同):[如何使用SharpSSH执行linux命令,提示输入额外的输入?](http://stackoverflow.com/questions/9857788/how-to-use- sharpssh换执行-Linux的命令 - 其中的提示换产生额外-INP)。 – 2014-09-24 19:40:21

回答

2

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

看到我对另一个SharpSSH问题的答案Download file based on date modified from SFTP


虽然SharpSSH是一条走不通的项目,你应该使用其他SFTP库:

+1

我会接受这个aswer,因为我别无选择,只能切换图书馆。我和[Kellerman Software]一起去了(http://www.kellermansoftware.com/p-41-net-sftp-library.aspx?mode=Specifications&)。谢谢。 – smr5 2014-09-25 19:46:28