2

SharpSSH を使用して、ローカル ディレクトリから SFTP に zip ファイルをアップロードしています。すべて正常に動作します。ただし、アップロードしたばかりの現在のファイルのファイルサイズを取得したいと思います。私がこれを行っている理由は、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そのファイルのファイル サイズを取得するようなプロパティがないことですか?

リモート サーバー内のファイルのファイル サイズを調べるために使用できる別の方法はありますか?

4

1 に答える 1

3

SharpSSH はそれを許可しません。ただし、SharpSSH はオープン ソースであるため、コーディングできます。

別の SharpSSH の質問に対する私の回答を参照してくださいDownload file based on date modified from SFTP .


SharpSSH は終了したプロジェクトですが、別の SFTP ライブラリを使用する必要があります。

  • SSH.NETにはSftpClient.ListDirectoryIEnumerable<SftpFile>. プロパティSftpFileがあります。.Length

  • WinSCP .NET アセンブリには、 プロパティを持つ のコレクションをSession.ListDirectory( 経由で) 返すメソッドがあります。(私は WinSCP .NET アセンブリの作成者です)RemoteDirectoryInfo.FilesRemoteFileInfo.Length

于 2014-09-24T19:58:16.107 に答える