0

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

"."
"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();
                }
            }
4

1 回答 1

1

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

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

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

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

于 2013-09-12T08:17:54.547 回答