【发布时间】:2014-09-24 17:47:59
【问题描述】:
我正在使用 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 这样的属性来获取该文件的文件大小?
我可以采取另一种方法来找出远程服务器中文件的文件大小吗?
【问题讨论】:
-
由于您有 SSH 连接,我认为您可以在远程服务器上执行类似
ls的命令。这是一个这样做的例子(虽然它涉及一些稍微不同的东西):how to use SharpSSH for Executing linux commands which prompts for additonal input?.
标签: c# console-application sftp sharpssh