如何从FTP获取文件列表

问题描述

我正在尝试从 FTP 获取文件列表。但是我得到了保存文件的目录的名称

    List<string> file_names = new List<string>();
    try
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Host + "Data");
        request.Method = WebRequestMethods.Ftp.ListDirectory;

        request.Credentials = new NetworkCredential(UserID,Password);

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

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);
        string files = reader.ReadToEnd();

        print(files); // prints "Data" instead of list of file names

        file_names = files.Split(new string[] { "\r\n" },StringSplitOptions.RemoveEmptyEntries).ToList();


        Debug.Log($"Directory List Complete,status {response.StatusDescription}");

        reader.Close();
        response.Close();
    }
    catch(WebException e)
    {
        print(e.Message + "\tCould not get files from server");
    }

我做错了什么?

解决方法

我找到了 this 第三方 FTP 库,这使它变得更加简单。

List<string> files = new List<string>();
    FtpClient client = new FtpClient("192.168.0.125",2221,new NetworkCredential(UserID,Password));
    //client.Credentials = new NetworkCredential(UserID,Password);
    client.Connect();
    foreach(FtpListItem item in client.GetListing("/Data"))
    {
        if (item.Type == FtpFileSystemObjectType.File)
        {
            files.Add(item.Name);
            print(item.Name);
        }
            
    }