簡體   English   中英

在 SftpClient 中,如何檢查文件是否已在目錄中下載?

[英]In SftpClient how can i check if the file has been donwlonded in directory or not?

我正在從 SFTP 下載並想檢查該文件是否存在於文件夾“目錄@“D:...”中

 using (SftpClient sftp = new SftpClient(Host, Port, Username, Password))

            {
                sftp.Connect();

                var files = sftp.ListDirectory(RemoteFileName);

                string downloadFileNames = string.Empty;

                foreach (var file in files)
                {
                    if (file.FullName.EndsWith(".gz"))
                    {
                        using (Stream fileStream = File.Create(Path.Combine(directory, file.Name)))
                        {

                            sftp.DownloadFile(file.FullName, fileStream);
                        }
                    }
                    downloadFileNames += file.Name;
                }
            }

根據您的評論:

我不想每次都下載相同的文件我想檢查它是否已經下載然后不再下載

我假設您只想下載以前未下載的文件。

為了實現這一點,請使用File.Exists來驗證您是否已將文件下載到某個位置:

foreach (var file in files)
{
    if (file.FullName.EndsWith(".gz"))
    {
        var targetFilename = Path.Combine(directory, file.Name);

        if (!File.Exists(targetFilename))
        {
            using (Stream fileStream = File.Create(targetFilename))
            {
                sftp.DownloadFile(file.FullName, fileStream);
            }
            downloadFileNames += file.Name;
        }
    }
}

這會從 SFTP 服務器下載目標文件之前驗證目標文件是否存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM