'método que cuenta los archivos de TEMP después del borrado
'estos archivos son los que no han podido ser borrados porque están en uso
Protected Sub listadoPost()
Try
'variables para guardar el nº de archivos
'iCuentaTempPost = nº de archivos en la raíz de TEMP
'iCuentaSubdirPost = nº de carpetas en la raíz de TEMP
'iCuentaSubdirFilesPost = nº de archivos en las carpetas de la raíz de TEMP
Dim iCuentaTempPost, iCuentaSubdirPost, iCuentaSubdirFilesPost As Integer
'la clase DirectoryInfo expone métodos de instancia para crear, mover y
'enumerar archivos en directorios y subdirectorios
'se utiliza para operaciones típicas como copiar, mover, cambiar de nombre,
'crear y eliminar directorios
Dim dirTemp As New DirectoryInfo(rutaTemp)
'comprobar si el directorio existe
If dirTemp.Exists = True Then
'contar los archivos de la raíz de TEMP (no en subdirectorios),
iCuentaTempPost = dirTemp.GetFiles.Length
'
'ahora no hace falta contar los archivos de las subcarpetas pues el método
'dirTemp.Delete(True) las ha eliminado
'contar todos los subdirectorios de TEMP
'Dim dirSub As FileSystemInfo() = dirTemp.GetDirectories()
'iCuentaSubdirPost = dirSub.Length
'contar todos los archivos de cada subdirectorio (sólo en el primer nivel de subdirectorios)
'Dim dirTemp2 As New DirectoryInfo(rutaTemp)
'For Each dirTemp2 In dirSub
' iCuentaSubdirFilesPost += dirTemp2.GetFileSystemInfos.Length
'Next
'
'nº de archivos borrados hasta la fecha + nº de archivos borrados en la ejecución actual
lCuentaBorrados = lCuentaBorrados + (iCuentaTempAll - iCuentaTempPost)
'
'escribir el nº de archivos en un archivo de texto guardado en %WINDIR%
'el archivo se llama C:\Windows\Borrar_TEMP.txt (siendo %WINDIR% = C:\Windows en este caso)
'las clases Stream.Reader y Stream.Writer permiten tratar con archivos de texto secuenciales
Dim swEscritor As StreamWriter
'variable para la primera línea del archivo de texto
Dim sLinea As String
' StreamWriter recibe 3 parámetros:
'- String con la ruta al archivo
'- True para añadir texto al existente, False para sobreescribir el texto existente
'- codificación de caracteres que se utilizará (default: página de códigos ANSI usada por el sistema)
swEscritor = New StreamWriter(rutaTxt, False, Encoding.Default)
sLinea = CStr(lCuentaBorrados)
'escribir el valor de lCuentaBorrados en la primera línea
swEscritor.WriteLine(sLinea)
'cerrar el archivo
swEscritor.Close()
'
'mostrar información en la etiqueta de texto
'variable iCuentaTempAll --> total de archivos encontrados antes de borrar TEMP
'restándole los archivos no borrados por estar en uso --> archivos borrados realmente
Me.Label2.Text = (iCuentaTempAll - iCuentaTempPost).ToString
'variable lCuentaBorrados --> nº de archivos borrados hasta la fecha + nº de archivos borrados en la ejecución actual
If lCuentaBorrados = 0 Then
Me.Label3.Text = "Ningún archivo"
Else
Me.Label3.Text = lCuentaBorrados.ToString("#,#") & " archivos"
End If
Else
'crear el directorio temporal en caso de que no exista
'algunos programas arrancan con errores si no detectan la presencia del directorio definido en TEMP
'por ejemplo: Visual Studio da error de compilador, Media Player no inicia correctamente...
dirTemp.Create()
Me.Label1.Text = "0"
Me.Label2.Text = "0"
End If
'capturar excepciones
Catch pollo As Exception
MessageBox.Show("AVISO: " & pollo.Message, "Aviso del programa", MessageBoxButtons.OK)
Application.Exit()
End Try
End Sub