如何在C#中使用FTP列出目录内容?

时间:2010-07-21 11:58:45

标签: c# .net ftp directory-listing

如何使用C#中的FTP列出目录内容?

我使用下面的代码用FTP列出目录内容它以XML格式返回结果,但我只想要目录名而不是整个内容。

我该怎么做?

public class WebRequestGetExample
{
    public static void Main ()
    {
        // Get the object used to communicate with the server.
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/");
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

        // This example assumes the FTP site uses anonymous logon.
        request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);
        Console.WriteLine(reader.ReadToEnd());

        Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription);

        reader.Close();
        response.Close();
    }
}

MSDN

7 个答案:

答案 0 :(得分:57)

试试这个:

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
ftpRequest.Credentials =new NetworkCredential("anonymous","janeDoe@contoso.com");
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());

List<string> directories = new List<string>();

string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
    directories.Add(line);
    line = streamReader.ReadLine();
}

streamReader.Close();

它给了我一个目录列表...所有列在目录字符串列表中...告诉我这是否是你需要的

答案 1 :(得分:1)

您可能正在寻找PrintWorkingDirectory

答案 2 :(得分:1)

您需要ListDirectory列出目录内容

编辑:或者你可以使用这个包装好的Chilkat

答案 3 :(得分:1)

某些代理重新格式化目录列表,因此除非您可以保证代理不会更改,否则很难可靠地解析目录列表

答案 4 :(得分:0)

在以下链接中有一个方法GetDirectoryInformation(),它从FTP目录递归地获取文件和目录。

Getting files from FTP directory recursively

答案 5 :(得分:0)

获取FTP目录内容的最简单,最有效的方法:

var contents = GetFtpDirectoryContents(new Uri(“ftpDirectoryUri”),new NetworkCredential(“userName”,“password”));

Collection<Banana>

答案 6 :(得分:-1)

如果要列出de目录中文件的名称,则必须放入 (reqFTP.Proxy = null;)在调用之前(reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;)。

希望这可以帮到你!