CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Getfiles Con Patrón

(1/1)

elbarto:
Hola.

Tengo un directorio donde hay ficheros con el siguiente formato: ABCAAAAMMDD.xml y otros con el formato ABCAAAAMMDDN.xml.
Por ejemplo ABC20041221.xml y ABC200412219.xml.
El primer tipo formado por ABC más una fecha, y el segundo tipo además lleva un número adicional.

Necesito listar los archivos que tienen el segundo ormato (ABC + por lo menos 9 caracteres . xml). Utilizando el siguiente código:


--- Código: Text ---Dim di As New System.IO.DirectoryInfo(gsFilePath) Dim fiFicheros As System.IO.FileInfo() = di.GetFiles("ABC?????????*.xml")  
GetFiles me devuelve tanto los que tienen solo la fecha como los que tienen fecha + un número.
Usando este patrón en la utilidad de búsqueda del windows me devuelve solo los que yo quiero.

¿Alguien sabe porqué? ¿Cómo podría obtener únicamente los archivos que quiero?

Ejemplo:

Ficheros en el directorio:
ABC20041221.xml
ABC200412210.xml
ABC200412211.xml
ABC200412212.xml

Quiero que getfiles me devuelva:

ABC200412210.xml
ABC200412211.xml
ABC200412212.xml

Y usando ese patrón me devuelve todos

Gracias de antemano.

sergiotarrillo:
Cuando una función no se adecue a lo que tu quieres, por mas que intentas y no pasa nada, entonces lo que debes hacer es aplicarle la magia a la funcion, bueno le hize la función y aqui te la mando:


--- Código: Text ---    Dim di As New DirectoryInfo(gsFilePath)          Dim fiTemp() As FileInfo = di.GetFiles("ABC*.xml")        Dim fiFicheros(0) As FileInfo        Dim i As Integer = 0         'for para contar cuantos hay        For Each fil As FileInfo In fiTemp            If (fil.Name.Length = 16) Then                                i = i + 1            End If        Next         ReDim fiFicheros(i - 1)         i = 0        'for para llenar el nuevo arreglo        For Each fil As FileInfo In fiTemp            If (fil.Name.Length = 16) Then                fiFicheros(i) = fil                i = i + 1            End If        Next          For i = 0 To fiFicheros.Length - 1            LstFiles.Items.Add(fiFicheros(i).Name)        Next 
P.D.: Si no quieres contar los archivos puedes darle un tamaño predeterminado, lo que unico que gastarias seria espacios de memoria en vano......
P.D.: Pruebalo y me dices como te jue.....

elbarto:
Gracias Serghio, ya había hecho algo parecido para tratar sólo los archivos que me interesan.

Pero muchas gracias de todas formas por tu interés.

Un saludo.

Navegación

[0] Índice de Mensajes

Ir a la versión completa