Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Tomas1982 en 5 Octubre 2016, 18:02 pm



Título: Ayuda a optimizar codigo
Publicado por: Tomas1982 en 5 Octubre 2016, 18:02 pm
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
  1.  
  2. Imports System
  3. Imports System.IO
  4. Imports System.Windows
  5. Imports System.Threading.Tasks
  6. Imports System.Reflection
  7. Imports System.Text
  8. Imports System.Security.Cryptography
  9. Imports System.Security.AccessControl
  10.  
  11.  
  12. Public NotInheritable Class Form1 : Inherits Form
  13.  
  14.    Dim linea As String
  15.  
  16.       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  17.  
  18.        Dim Ruta As String = My.Application.Info.DirectoryPath()
  19.        Dim LetraRuta As String = Mid(Ruta, 1, 3)
  20.        Label1.Text = LetraRuta
  21.  
  22.        'Cargar datos del txt
  23.        Dim lector As New StreamReader(Ruta & "\" & "test.txt")
  24.        ' Leer el contenido mientras no se llegue al final
  25.        While lector.Peek() <> -1
  26.            ' Leer una línea del fichero
  27.            linea = lector.ReadLine()
  28.            ' Si no está vacía, añadirla al control
  29.            ' Si está vacía, continuar el bucle
  30.            If String.IsNullOrEmpty(linea) Then
  31.                Continue While
  32.            End If
  33.           ListBox3.Items.Add(linea)
  34.        End While
  35.        ' Cerrar el fichero
  36.        lector.Close()
  37.  
  38.        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()
  39.        For Each [Drive] In allDrives
  40.            Dim strDrive As String = [Drive].ToString
  41.            If LetraRuta <> strDrive Then 'Comprobamos que las rutas sean diferentes
  42.                Try
  43.                    Dim DriveSubDirectories As String() = Directory.GetDirectories(strDrive)
  44.                    For Each strSubDirectory As String In DriveSubDirectories
  45.                        Dim strFolder As String = strSubDirectory.Remove(0, strSubDirectory.LastIndexOf("\") + 1)
  46.                        ListBox1.Items.Add(strSubDirectory) '<---Carpeta
  47.                        Try
  48.                            Dim strFiles As IEnumerable = Directory.EnumerateFiles(strDrive & strFolder, "*", SearchOption.AllDirectories)
  49.                            Dim NbArchivo As String
  50.                            For Each strFileName In strFiles
  51.                                ListBox2.Items.Add(strFileName) '<--Archivo con ruta completa
  52.  
  53.                                For Each item As Object In ListBox3.Items
  54.                                    'If InStr(strFileName, item) Then
  55.                                    Dim ExArchivo As String
  56.                                    ExArchivo = Path.GetExtension(strFileName)
  57.                                    If ExArchivo = item Then
  58.                                        NbArchivo = Path.GetFileName(strFileName) 'Then
  59.  
  60.                                        Dim RutaDestino As String = Ruta & "\" & "Organizado" & "\" & ExArchivo & "\"
  61.  
  62.                                        ' Crea directorio Raiz
  63.                                        If Not Directory.Exists(Ruta & "\" & "Organizado") Then
  64.                                            Directory.CreateDirectory(Ruta & "\" & "Organizado")
  65.                                            'Le da atributos a la carpeta raiz
  66.                                            Dim folder_info As IO.DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(Ruta & "\" & "Organizado")
  67.                                          End If
  68.  
  69.                                        'Crea subdirectorios por extensiones encontradas
  70.                                        If Not Directory.Exists(RutaDestino) Then
  71.                                            Directory.CreateDirectory(RutaDestino)
  72.  
  73.                                            Dim folder_info2 As IO.DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(RutaDestino)
  74.  
  75.                                        End If
  76.                                        'File.Copy("K:\55\", True)
  77.                                        File.Copy(strFileName, RutaDestino & NbArchivo, True)
  78.                                    End If
  79.                                Next
  80.                                Me.Text = ListBox2.Items.Count.ToString() & ".Archivos"
  81.                            Next 'strFileName
  82.                        Catch ex As Exception
  83.                            '   MessageBox.Show(ex.Message)
  84.                        End Try 'strFiles
  85.                    Next  'strSubDirectory
  86.  
  87.                Catch ex As Exception
  88.                    ' MessageBox.Show(ex.Message)
  89.                End Try 'Drives
  90.            End If
  91.        Next '[Drive]
  92.        'Bloqueamos la carpera
  93.        Dim fs As FileSystemSecurity = File.GetAccessControl(Ruta & "\" & "Organizado")
  94.        fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
  95.        File.SetAccessControl(Ruta & "\" & "Organizado", CType(fs, FileSecurity))
  96.  
  97.    End Sub
  98. End Class
  99.  
  100.