GetDirectories no puede enumerar las subcarpetas de una carpeta con el nombre # 255

Mi aplicación es C # 3.5 se ejecuta en Windows 7 Ultimate, 64 bit. Pasa por todas las subcarpetas de carpetas para realizar su trabajo. Sin embargo, falla (cae en el bucle infinito hasta la excepción StackOverflow.com) si se ejecuta en la carpeta cuyo nombre es solo un símbolo que es # 255.

Para reproducir, puede hacer lo siguiente:

Ejecute el Explorador de Windows cree la carpeta C: \ Temp en esta carpetacrear una nueva carpeta y renombrarla con Alt-255 (usando el teclado numérico)crear subcarpetas "primero" y "segundo" allícrear subcarpetas "1" y "2" en Temp

Así que ahora tienes:

C: \ 1C: \ 2C: \ \ firstC: \ \ second

Para dicha carpeta C: \ Temp con una subcarpeta con el nombre # 255 (o más # 255 symbo, ls) el siguiente código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

class Program
{
  public static string[] GetDirectories(string pathToTraverse)
  {
    List<string> result = new List<string>();

    foreach (DirectoryInfo subFolder in new DirectoryInfo(pathToTraverse).GetDirectories())
    {
      result.Add(subFolder.FullName);
    }
    return result.ToArray();
  }

  public static void TraverseFolders(string folderToTraverse)
  {
    foreach (string subFolder in GetDirectories(folderToTraverse))
    {
      Console.WriteLine(subFolder);

      TraverseFolders(subFolder);
    }
  }

  static void Main(string[] args)
  {
    TraverseFolders(@"C:\Temp");
  }
}

nunca terminará y le dará resultados como:

C: \ Temp \
C: \ Temp \ 1
C: \ Temp \ 2
C: \ Temp \
C: \ Temp \ 1
C: \ Temp \ 2
C: \ Temp \
C: \ Temp \ 1
C: \ Temp \ 2
C: \ Temp \

ntonces, ¿cómo enumero correctamente esas subcarpetas de carpetas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta