欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > c#从ftp服务器下载文件读取csv

c#从ftp服务器下载文件读取csv

2025/4/19 7:20:45 来源:https://blog.csdn.net/qq165285727/article/details/147279039  浏览:    关键词:c#从ftp服务器下载文件读取csv

从 FTP 服务器下载文件的功能,并且支持根据文件名称的前缀或直接文件名进行查找和下载。以下是对代码的一些建议和修改,以确保它能够满足您的需求,尤其是如果您希望仅下载特定类型的文件(例如 .csv 文件)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;namespace Drv.Client
{public partial class FtpClient{private static readonly object lockObject = new object();/// <summary>/// 下载特定前缀或特定文件名的文件(支持筛选文件类型)/// </summary>/// <param name="ftpUrl"></param>/// <param name="username"></param>/// <param name="password"></param>/// <param name="filePrefix"></param>/// <param name="lastModifiedTime"></param>/// <param name="extension">需要下载的文件扩展名(例如 ".csv")</param>/// <returns></returns>public static string DownloadFileFromFtp(string ftpUrl,string username,string password,string filePrefix,ref DateTime lastModifiedTime,string extension = ".csv"){try{lock (lockObject){// 列出文件List<string> files = ListFilesOnFtp(ftpUrl, username, password);foreach (var file in files){// 检查文件名是否以指定前缀和扩展名结尾if (file.StartsWith(filePrefix, StringComparison.OrdinalIgnoreCase) && file.EndsWith(extension, StringComparison.OrdinalIgnoreCase)){string fileUrl = ftpUrl + "/" + file; // 确保文件URL正确FtpWebRequest request = CreateFtpRequest(fileUrl, username, password, WebRequestMethods.Ftp.GetDateTimestamp);// 获取最后修改时间DateTime serverLastModifiedTime;using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()){serverLastModifiedTime = response.LastModified;}// 比较最后修改时间if (serverLastModifiedTime > lastModifiedTime){lastModifiedTime = serverLastModifiedTime;// 下载文件内容request = CreateFtpRequest(fileUrl, username, password, WebRequestMethods.Ftp.DownloadFile);using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())using (Stream responseStream = response.GetResponseStream())using (StreamReader reader = new StreamReader(responseStream)){return reader.ReadToEnd(); // 读取并返回文件内容}}else{_logger.LogInfo($"The file {file} is not modified since the last download.");}}}return string.Empty; // 如果没有文件符合条件}}catch (WebException ex){// 处理 FTP 相关的异常if (ex.Response is FtpWebResponse ftpResponse){_logger.LogError($"FTP Error: {ftpResponse.StatusDescription}");}else{_logger.LogError($"Network Error: {ex.Message}");}return string.Empty;}}private static List<string> ListFilesOnFtp(string ftpUrl, string username, string password){List<string> fileList = new List<string>();FtpWebRequest request = CreateFtpRequest(ftpUrl, username, password, WebRequestMethods.Ftp.ListDirectory);using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())using (Stream responseStream = response.GetResponseStream())using (StreamReader reader = new StreamReader(responseStream)){while (!reader.EndOfStream){fileList.Add(reader.ReadLine());}}return fileList;}private static FtpWebRequest CreateFtpRequest(string ftpUrl, string username, string password, string method){FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);request.Method = method;if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)){request.Credentials = new NetworkCredential(username, password);}return request;}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词