Ayuda a optimizar codigo

Iniciado por Tomas1982, 5 Octubre 2016, 18:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Tomas1982

Saludos ante todo. Estoy tratando de crear una app que me sea capas de organizar las extensiones de ficheros que le oriente, hasta el momento e logrado algo que no se si es la mejor manera de hacerlo, ya que soy nuevo en la programación. A continuación les dejo el código para el que le sirva y para si me pudieran ayudar a mejorar su funcionamiento. Gracias...

     
Código (vbnet) [Seleccionar]


Imports System
Imports System.IO
Imports System.Windows
Imports System.Threading.Tasks
Imports System.Reflection
Imports System.Text
Imports System.Security.Cryptography
Imports System.Security.AccessControl


Public NotInheritable Class Form1 : Inherits Form
   
   Dim linea As String

      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       Dim Ruta As String = My.Application.Info.DirectoryPath()
       Dim LetraRuta As String = Mid(Ruta, 1, 3)
       Label1.Text = LetraRuta

       'Cargar datos del txt
       Dim lector As New StreamReader(Ruta & "\" & "test.txt")
       ' Leer el contenido mientras no se llegue al final
       While lector.Peek() <> -1
           ' Leer una línea del fichero
           linea = lector.ReadLine()
           ' Si no está vacía, añadirla al control
           ' Si está vacía, continuar el bucle
           If String.IsNullOrEmpty(linea) Then
               Continue While
           End If
          ListBox3.Items.Add(linea)
       End While
       ' Cerrar el fichero
       lector.Close()

       Dim allDrives() As DriveInfo = DriveInfo.GetDrives()
       For Each [Drive] In allDrives
           Dim strDrive As String = [Drive].ToString
           If LetraRuta <> strDrive Then 'Comprobamos que las rutas sean diferentes
               Try
                   Dim DriveSubDirectories As String() = Directory.GetDirectories(strDrive)
                   For Each strSubDirectory As String In DriveSubDirectories
                       Dim strFolder As String = strSubDirectory.Remove(0, strSubDirectory.LastIndexOf("\") + 1)
                       ListBox1.Items.Add(strSubDirectory) '<---Carpeta
                       Try
                           Dim strFiles As IEnumerable = Directory.EnumerateFiles(strDrive & strFolder, "*", SearchOption.AllDirectories)
                           Dim NbArchivo As String
                           For Each strFileName In strFiles
                               ListBox2.Items.Add(strFileName) '<--Archivo con ruta completa

                               For Each item As Object In ListBox3.Items
                                   'If InStr(strFileName, item) Then
                                   Dim ExArchivo As String
                                   ExArchivo = Path.GetExtension(strFileName)
                                   If ExArchivo = item Then
                                       NbArchivo = Path.GetFileName(strFileName) 'Then

                                       Dim RutaDestino As String = Ruta & "\" & "Organizado" & "\" & ExArchivo & "\"

                                       ' Crea directorio Raiz
                                       If Not Directory.Exists(Ruta & "\" & "Organizado") Then
                                           Directory.CreateDirectory(Ruta & "\" & "Organizado")
                                           'Le da atributos a la carpeta raiz
                                           Dim folder_info As IO.DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(Ruta & "\" & "Organizado")
                                         End If

                                       'Crea subdirectorios por extensiones encontradas
                                       If Not Directory.Exists(RutaDestino) Then
                                           Directory.CreateDirectory(RutaDestino)

                                           Dim folder_info2 As IO.DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(RutaDestino)
                                         
                                       End If
                                       'File.Copy("K:\55\", True)
                                       File.Copy(strFileName, RutaDestino & NbArchivo, True)
                                   End If
                               Next
                               Me.Text = ListBox2.Items.Count.ToString() & ".Archivos"
                           Next 'strFileName
                       Catch ex As Exception
                           '   MessageBox.Show(ex.Message)
                       End Try 'strFiles
                   Next  'strSubDirectory

               Catch ex As Exception
                   ' MessageBox.Show(ex.Message)
               End Try 'Drives
           End If
       Next '[Drive]
       'Bloqueamos la carpera
       Dim fs As FileSystemSecurity = File.GetAccessControl(Ruta & "\" & "Organizado")
       fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
       File.SetAccessControl(Ruta & "\" & "Organizado", CType(fs, FileSecurity))

   End Sub
End Class