2013-09-12 10 views
0

у меня есть проблемы с этим code..the кода отдай мне эти имена файлов:Список файлов с FTP

"." 
"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

Списки управления каталогом. и .. как виртуальные каталоги. Каталог. указывает на себя, позволяя обновить каталог. Каталог .. направляет вам один каталог вверх. Отфильтруйте эти две записи в каталоге при разборе ваших заказов.

Возможно, вы видели пути к каталогам, такие как c: \ windows .. \ Users, которые на самом деле указывают на c: \ Users as .. идет одна иерархия каталогов.

Наличие пути, указывающего на. \ Users означает каталог Пользователи в текущей (.) Директории.

Вы всегда должны отфильтровывать их, потому что, если вы пишете рекурсивный алгоритм, читающий каталог "." приведет к бесконечному циклу.

+0

Да, но я не знаю, как я могу удалить это из списка имен ... У вас есть идеи? Например: Files.Remove ?? – Kate

+0

Результат: files.Remove ("."); и files.Remove (".."); – Kate

+0

Я не знаю, если это предназначено, но если есть проблема с подключением файлов, вы не будете иметь бесконечный цикл. Поскольку вы постоянно вызываете getFileList, тогда. – Samuel

Смежные вопросы