我正在使用 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 修改日期下载文件 https://stackoverflow.com/q/25543826/850848.
虽然 SharpSSH 是一个死项目,但您应该使用另一个 SFTP 库:
SSH.NET https://github.com/sshnet/SSH.NET有方法SftpClient.ListDirectory
返回IEnumerable<SftpFile>
. The SftpFile
有.Length
财产;
WinSCP .NET 程序集 https://winscp.net/eng/docs/library有方法Session.ListDirectory https://winscp.net/eng/docs/library_session_listdirectory返回(通过RemoteDirectoryInfo.Files
)的集合RemoteFileInfo https://winscp.net/eng/docs/library_remotefileinfo与财产.Length
.
(我是WinSCP .NET程序集的作者)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)