Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - OscarCadenas_91

#21
Yo estoy aprendiendo recien, pero talves podrias hacerlo con String.Format

Código (vbnet) [Seleccionar]
fichero.WriteLine(String.Format("{0}  {1}   {2}   {3}", ListBox1.Items(i), ListBox2.Items(i), ListBox3.Items(i), ListBox4.Items(i)))
#22
Ok guardado todo lo que me dices, sobre lo de finally.  :P

sobre lo de crear esa carpeta, sin colocarlo en un bloque try/catch, abre y se cierra.
Bajo el bloque Try/Catch, me manda este error:

Excepción:Se produjo: "No se puede encontrar una parte de la ruta de acceso 'G:\'." (System.IO.DirectoryNotFoundException)
Se produjo una System.IO.DirectoryNotFoundException: "No se puede encontrar una parte de la ruta de acceso 'G:\'."


Mi USB esta formateado en Fat32, en un disco duro formateado en NTFS no muestra error ni tampoco se cierra.
#23
gracias por todo, aun me falta mucho por aprender.

Sobre lo de intentar reproducir el problema con:

Código (vbnet) [Seleccionar]
Directory.CreateDirectory(sourceFolder)

No crea el directorio con ese caracter y tambien lo de si existe esa ruta tampoco funciona(supongo que debe ser por ese caracter).

Lo que si funciona es:
Código (vbnet) [Seleccionar]
Directory.Move(sourceFolder, DestinyFolder)

Ya estaba pensando en usar el "On Error Resume Next", pero decidi hacerlo asi:

Código (vbnet) [Seleccionar]

  Private Sub TestForm_Shown() Handles MyBase.Shown
       Dim sourceFolder As String = Path.Combine("G:\", Convert.ToChar(160))
       Dim DestinyFolder As String = Path.Combine("G:\", "Recuperado")
       Try
           Directory.Move(sourceFolder, DestinyFolder)
       Catch ex As Exception

       Finally
           Dim folderPath As String = "G:\"
           Dim fileExts As IEnumerable(Of String) = {"docx", "pptx"}
           Dim fInfoCol As IEnumerable(Of FileInfo)
           Dim lvItems As IEnumerable(Of ListViewItem)

           Try
               fInfoCol = GetFiles(folderPath, fileExts, SearchOption.AllDirectories)

           Catch ex As Exception
               Throw

           End Try

           lvItems = From fInfo As FileInfo In fInfoCol
                     Select New ListViewItem(fInfo.FullName)

           With Me.ListView1
               .BeginUpdate()
               .Items.AddRange(lvItems.ToArray)
               .EndUpdate()
           End With
       End Try
   End Sub

   ''' <summary>
   ''' Retrieves the files inside a directory,
   ''' containing the specified file extensions.
   ''' </summary>
   ''' <param name="folderPath">The directory path where to search files.</param>
   ''' <param name="fileExts">The file extensions to match.</param>
   ''' <param name="searchOption">The searching mode.</param>
   ''' <returns>IEnumerable(Of FileInfo).</returns>
   Public Shared Function GetFiles(ByVal folderPath As String,
                                   ByVal fileExts As IEnumerable(Of String),
                                   ByVal searchOption As SearchOption) As IEnumerable(Of FileInfo)

       ' Set all the file extensions to lower-case and
       ' Remove empty file extensions and
       ' Remove "*" and "." chars from beginning of the file extension.
       fileExts = From fileExt As String In fileExts
                  Where Not String.IsNullOrEmpty(fileExt)
                  Select fileExt.TrimStart({"*"c, "."c, " "c}).TrimEnd.ToLower

       Return From filePath As String In Directory.GetFiles(folderPath, "*", searchOption)
              Where If(Not String.IsNullOrEmpty(Path.GetExtension(filePath)),
                       fileExts.Contains(Path.GetExtension(filePath).TrimStart("."c).ToLower),
                       Nothing)
              Select New FileInfo(filePath)

   End Function


Asi me funciona, si sigo estoy equivocado corrigeme

Saludos



#24
una tonteria mia, lo de no poner el valor unicode de ese caracter: "NO-BREAK SPACE" U+00A0-> (&HA0), pero igual no daba.

Lo queria hacer desde vb.net de forma automatica sin estar yendo a las propiedades del explorer,carpetas ocultas,ver la carpeta, etc, ya que cuando estaba en otras maquinas no se podia quitar los atributos de oculto y por tanto no se podia ver la carpeta en cuestion.

Encontre una forma, no se si la mejor, pero funciono:
Código (vbnet) [Seleccionar]

Shell("cmd.exe /c move /-y " & """" & "G:\" & ChrW(&HA0) & """" & " G:\Recuperado")

Ahora solo me falta hacer es que si existe esa carpeta lo cambie de nombre, caso contrario omita ese paso xD.

Gracias por la ayuda, saludos.
#25
Hola, gracias por responder y gracias por la sugerencia de Directory.GetFiles
eh intentado probar tu codigo, pero me marca un error:
'ToArray' no es un miembro de 'System.Collections.generic.IEnumerable(Of String)'
en esta linea:
filePaths = From filePath As String In My.Computer.FileSystem.GetFiles(folderPath,
                                                                                  SearchOption.SearchAllSubDirectories,
                                                                                 fileExts.ToArray)


Solucione eso, estaba con .netframework 2 actualice a .netramework 4.5.1


Sobre lo de Renombrar el nombre de la carpeta, lo eh intentado, asì:
Código (vbnet) [Seleccionar]
 My.Computer.FileSystem.RenameDirectory("G:\" & " ", "Carpeta2")



Pero no reconoce el nombre de la carpeta y lo toma como si solo estuviese escrito "G:\"

manualmente se puede renombrar, pero desde vb.net nada, no existe alguna otra forma??


#26

Hola a todos soy nuevo en este foro.

Comence hace 3 semanas a aprender VB.NET y despues de leer y leer  queria hacer mi primer programa es muy sencillo pero lo necesitaba, el programa lo que hace es buscar archivos con extension ".docx" y ".pptx" de mi memoria usb para luego copiar en otra carpeta, hasta hace un par de dias funcionaba, buscaba archivos y los mostraba en un listview1, pero ayer me infecte con un virus mi usb y oculto todas los archivos y carpetas y mi antivirus borro el virus, pero aun estaban ocultos los archivos y crei que igual deberia listar los archivos sin importar los atributos de oculto, pero cuando le doy a buscar me muestra el siguiente error:

No se controló StackOverflowException

Excepción no controlada del tipo 'System.StackOverflowException' en mscorlib.dll

Despues busque la forma de volver a mostrar los archivos desde el CMD de windows encontre que el virus movio todos mis archivos en una carpeta sin nombre(me di cuenta despues que el nombre tenia un espacio si no me equivoco es un caracter que aparece cuando se presiona alt + 0160).

El problema ocurre con esa carpeta con nombre vacio ya que si le cambio de nombre de la carpeta la aplicacion funciona.

Aqui les dejo el codigo del boton buscar archivos:


Código (vbnet) [Seleccionar]
'BOTON BUSCAR ARCHIVOS
Try
            Dim RutaArchivos As String = "G:\"

            For Each archivo As String In My.Computer.FileSystem.GetFiles(RutaArchivos, FileIO.SearchOption.SearchAllSubDirectories, "*.docx")
                ListView1.Items.Add(archivo)
            Next
For Each archivo2 As String In My.Computer.FileSystem.GetFiles(RutaArchivos, FileIO.SearchOption.SearchAllSubDirectories, "*.pptx")
                ListView1.Items.Add(archivo2)
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


Si alguien podria ayudarme a solucionarlo, se lo agradeceria mucho.