C# ftp获取文件夹下的文件夹和文件,进行递归获取所有,并打印文件名
时间: 2024-04-05 08:10:17 浏览: 193
以下是一个在 C# 中使用 FTP 获取文件夹下的所有文件和文件夹,并递归获取所有文件并打印文件名的示例:
```
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
namespace FtpExample
{
class Program
{
static void Main(string[] args)
{
// FTP 服务器地址
string ftpServer = "ftp://example.com";
// FTP 服务器用户名和密码
string ftpUsername = "username";
string ftpPassword = "password";
// 要遍历的 FTP 文件夹路径
string ftpFolderPath = "/example/folder";
// 获取 FTP 目录的文件列表
List<string> fileList = GetFtpFileList(ftpServer, ftpUsername, ftpPassword, ftpFolderPath);
// 遍历文件列表
foreach (string file in fileList)
{
Console.WriteLine(file);
}
}
// 获取 FTP 目录的文件列表,包括子目录中的文件
static List<string> GetFtpFileList(string ftpServer, string ftpUsername, string ftpPassword, string ftpFolderPath)
{
List<string> fileList = new List<string>();
// 创建 FTP 请求对象
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + ftpFolderPath);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
try
{
// 发送 FTP 请求并获取响应
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
// 读取响应流中的数据
string line = reader.ReadLine();
while (line != null)
{
string[] segments = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
// 文件路径为第9列之后的所有列
string filePath = ftpFolderPath + "/" + string.Join(" ", segments, 8, segments.Length - 8);
if (segments[0][0] == 'd')
{
// 如果是目录,则递归获取子目录的文件列表
List<string> subList = GetFtpFileList(ftpServer, ftpUsername, ftpPassword, filePath);
fileList.AddRange(subList);
}
else if (segments[0][0] == '-')
{
// 如果是文件,则添加到文件列表中
fileList.Add(filePath);
}
line = reader.ReadLine();
}
// 关闭响应流和响应对象
reader.Close();
response.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return fileList;
}
}
}
```
在上面的示例中,`GetFtpFileList` 方法递归遍历 FTP 目录的文件和子目录,并将所有文件的路径添加到一个字符串列表中。然后,这些文件名被遍历并打印到控制台上。
阅读全文