来自ftp的文件列表

时间:2013-09-12 08:04:27

标签: c# ftp filenames

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

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

但是在文件夹中只有order00001和订单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();
                }
            }

1 个答案:

答案 0 :(得分:1)

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

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

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

你应该总是过滤它们,因为如果你正在编写一个读取目录“。”的递归算法。将导致无限循环。