Estoy usando las llamadas a la API de Windows FindFirstFile y FindNextFile para buscar archivos que coincidan con una cadena de comodín determinada en un directorio. Por ejemplo, podría querer encontrar todos los archivos XML en un directorio, y entonces busco usando el patrón "* .xml".¿Existe una alternativa a la API FindFirstFile/FindNextFile de Windows que no busca nombres de archivos cortos?
Me encuentro con el problema de que si estoy buscando una extensión de 3 letras, y la extensión de un archivo comienza con esa extensión de 3 letras, mi búsqueda lo detectará, incluso si la extensión contiene más caracteres después de esos primeros 3. Por ejemplo, si mi archivo se llama somelongname.xmlaaaa, la búsqueda de "* .xml" lo detectará. El nombre corto de ese archivo es somelo ~ 1.xml, que coincide con la cadena de mi comodín.
Podría hacer mi propia coincidencia de comodines para evitar este problema, pero presumiblemente una API de Windows sería capaz de hacer esto de manera más eficiente que lo que podría, y mi código sería más simple. Por lo que puedo decir, no hay una manera de forzar estas funciones para ignorar los nombres cortos. ¿Hay alguna exposición API Windows con esta funcionalidad?
Interesante. Necesito apoyar Windows XP, entonces probablemente no pueda confiar en esta funcionalidad. Desafortunadamente, el hecho de que esto se haya agregado a esta API en Windows 7 probablemente indica que no existe en ninguna otra API antes. –
Parece que ese es el caso. Lamento haberte fallado :) Y gracias por la edición, @Rob – JoeFish
Resulta que esta documentación es muy engañosa. La búsqueda aún encontrará archivos que coincidan con el nombre corto, incluso si pasa en FindExInfoBasic. Simplemente no incluirá el nombre corto del archivo en el miembro cAlternateFileName de la estructura WIN32_FIND_DATA. –