【问题标题】:List of files from ftp来自 ftp 的文件列表
【发布时间】:2013-09-12 08:04:26
【问题描述】:

我有这个代码的问题..代码给我这个文件名:

"."
"orders00001.xml"
".."
"orders00010.xml" 

但文件夹中只有 order00001 和 order 00010.xml。请问您知道问题出在哪里吗?

private void getFileList()
            {
                List<string> files = new List<string>();
                try
                {
                    FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(****);
                    request.Method = WebRequestMethods.Ftp.ListDirectory;
                    request.Credentials = new NetworkCredential(**, **);
                    request.UsePassive = true;
                    request.UseBinary = true;
                    request.KeepAlive = false;
                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                    Stream responseStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(responseStream);
                    while (!reader.EndOfStream)
                    {
                        Application.DoEvents();
                        files.Add(reader.ReadLine());
                    }
                    reader.Close();
                    responseStream.Close(); //redundant
                    response.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("error connecting");
                }
                if (files.Count != 0)
                {
                    foreach (string file in files)
                    {
                     //My code on work with xml
                    }
                else
                {
                    getFileList();
                }
            }

【问题讨论】:

    标签: c# ftp filenames


    【解决方案1】:

    目录管理列表。和 .. 作为虚拟目录。目录。指向自身允许刷新目录。目录 .. 将您向上引导一个目录。 解析订单时过滤这两个目录条目。

    您可能已经看到像 c:\windows..\Users 这样的目录路径,它实际上指向 c:\Users,因为 .. 向上一个目录层次结构。

    具有指向 .\Users 的路径表示当前(.)目录中的目录 Users。

    您应该始终将它们过滤掉,因为如果您正在编写读取目录“。”的递归算法。将导致无限循环。

    【讨论】:

    • 是的,但我不知道如何从姓名列表中删除它...你知道吗?喜欢:Files.Remove??
    • 结果是:files.Remove(".");和 files.Remove("..");
    • 我不知道这是否是有意的,但如果存在未提供文件的连接问题,您将陷入无限循环。当您继续定期调用 getFileList 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多