代码之家  ›  专栏  ›  技术社区  ›  David Huthaifah Kholi

空FTP目录中有两个条目

  •  1
  • David Huthaifah Kholi  · 技术社区  · 6 年前

    我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它是连接到FTP区罚款,我可以上传/下载文件,并从它。

    这是我从文件夹中获取文件的代码。

    lstFiles = new List<string>();
    
    string remoteFTPPath = ftpLocation;
    var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath);
    
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
    request.Proxy = null;
    
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);
    
    List<string> directories = new List<string>();
    
    string line = reader.ReadLine();
    
    while (!string.IsNullOrEmpty(line))
    {
       directories.Add(line);
       line = reader.ReadLine();
    }
    reader.Close();
    

    为什么会这样?

    中的值 remoteFTPPath ftp://ftp.myArea.co.uk/myServer.co.uk/System-Files/

    这是我在FileZilla中打开它时的文件夹-它绝对是一个空文件夹。

    enter image description here

    如何查看系统文件中的所有文件并将其放入列表中?

    FileZilla日志:


    状态:正在检索目录列表“/myArea.co.uk"...
    状态:目录列表“/myArea.co.uk“成功

    状态:目录列表“/myArea.co.uk/System-“文件”成功

    在C应用程序上测试相同的代码时 Network.log 文件输出如下。

    ftp://ftp.myServer.co.uk/myArea.co.uk/System-Files/ )

    System.Net 信息:0:[6132]FtpWebRequest#60068066::GetResponse(Method=LIST.)
    System.Net 信息:0:[6132]FtpControlStream#34640832-已从创建连接xxx.xxx.x.xx:YYYY到xxx.xxx.xxx.x:年。
    System.Net 信息:0:[6132]正在将FtpWebRequest#60068066与FtpControlStream#34640832关联
    System.Net 信息:0:[6132]FtpControlStream#34640832-已收到响应[220]FTP服务器就绪。

    此服务器上也欢迎使用220-IPv6连接。

    System.Net 信息:0:[6132]FtpControlStream#34640832-正在发送命令[USER myUser]
    System.Net 信息:0:[6132]FtpControlStream#34640832-收到响应[331 User myUser OK。[需要密码]
    System.Net 信息:0:[6132]FtpControlStream#34640832-发送命令[PASS******]
    System.Net 信息:0:[6132]FtpControlStream#34640832-收到响应[230正常。当前目录为/]



    System.Net 信息:0:[6132]FtpControlStream#34640832-已收到响应[257”/“是您的当前位置]
    System.Net 信息:0:[6132]FtpControlStream#34640832-正在发送命令[CWD]/myArea.co.uk/System-[文件]

    System.Net 信息:0:[6132]FtpControlStream#34640832-发送命令[类型I]

    System.Net 信息:0:[6132]FtpControlStream#34640832-发送命令[PASV]
    System.Net 信息:0:[6132]FtpControlStream#34640832-收到响应[227进入被动模式(213171193,5117157)]
    System.Net 信息:0:[6132]FtpControlStream#34640832-发送命令[列表]
    System.Net 信息:0:[6132]FtpControlStream#34640832-已接收响应[150接受的数据连接]
    System.Net 信息:0:[6132]FtpControlStream#34640832-收到的响应[226-ASCII]

    总共226个匹配项]
    System.Net 信息:0:[6132]FtpWebRequest#60068066::(正在释放FTP连接#34640832。)
    System.Net 信息:0:[14644]服务点-关闭为空闲。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Martin Prikryl    6 年前

    . .. 目录列表中的条目,类似于*nix ls -a 或窗户 dir 命令。这些分别是对目录本身和父目录的引用。

    如果您不想要这些,您需要在代码中过滤掉它们。FileZilla做的也很确定。