SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: elbarto en Martes 21 de Diciembre de 2004, 12:33

Título: Getfiles Con Patrón
Publicado por: elbarto en Martes 21 de Diciembre de 2004, 12:33
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
  1. Dim di As New System.IO.DirectoryInfo(gsFilePath)
  2. Dim fiFicheros As System.IO.FileInfo() = di.GetFiles("ABC?????????*.xml")
  3.  

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.
Título: Re: Getfiles Con Patrón
Publicado por: sergiotarrillo en Domingo 26 de Diciembre de 2004, 14:14
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
  1.     Dim di As New DirectoryInfo(gsFilePath)
  2.  
  3.  
  4.         Dim fiTemp() As FileInfo = di.GetFiles("ABC*.xml")
  5.         Dim fiFicheros(0) As FileInfo
  6.         Dim i As Integer = 0
  7.  
  8.         'for para contar cuantos hay
  9.         For Each fil As FileInfo In fiTemp
  10.             If (fil.Name.Length = 16) Then                
  11.                 i = i + 1
  12.             End If
  13.         Next
  14.  
  15.         ReDim fiFicheros(i - 1)
  16.  
  17.         i = 0
  18.         'for para llenar el nuevo arreglo
  19.         For Each fil As FileInfo In fiTemp
  20.             If (fil.Name.Length = 16) Then
  21.                 fiFicheros(i) = fil
  22.                 i = i + 1
  23.             End If
  24.         Next
  25.  
  26.  
  27.         For i = 0 To fiFicheros.Length - 1
  28.             LstFiles.Items.Add(fiFicheros(i).Name)
  29.         Next
  30.  

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.....
Título: Re: Getfiles Con Patrón
Publicado por: elbarto en Lunes 27 de Diciembre de 2004, 09:34
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.