Principales respuestas
aceptar varias extensiones

Pregunta
-
mi pregunta es como poder hacer que el listbox solo me acepte algunas extensiones y me las muestre con solo el nombre hay un directorio que contiene muchas exenciones solo deseo que me deje recolectar las extensiones que yo quiero solo el nombre del archivo.
ListBox1.Items.Clear() For Each archivos As String In Directory.GetFiles(Label1.Text, _ "*.pdf" & "*.doc" & "*.txt", _ SearchOption.AllDirectories) ListBox1.Items.Add(Path.GetFileNameWithoutExtension(archivos))
- Editado Cael1020 lunes, 3 de octubre de 2016 18:24
Respuestas
-
Si perdón disculpe una pregunta si tuviera la ruta escrita en un TextBox, como cambiaría el Dialo.... por un TextBox
Dim ListaExtensiones As New List(Of String)() From {".txt", ".pdf", ".doc"} lbxArchivos.Items.Clear() For Each archivo As String In IO.Directory.GetFiles( txtRuta.Text, "*.*", IO.SearchOption.AllDirectories) If ListaExtensiones.Contains(Path.GetExtension(archivo)) Then lbxArchivos.Items.Add(Path.GetFileNameWithoutExtension(archivo)) End If Next
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Cael1020 lunes, 3 de octubre de 2016 20:20
Todas las respuestas
-
Entiendo que el parámetro 'searchPattern' no permite componer la búsqueda bajo distintas extensiones, por tanto podemos obtener todos los archivos de la ruta especificada '*.*' y luego filtrar los resultados:
Dim fbd As New FolderBrowserDialog() If fbd.ShowDialog() = DialogResult.OK Then lbxArchivos.Items.Clear() For Each archivo As String In IO.Directory.EnumerateFiles( fbd.SelectedPath, "*.*", IO.SearchOption.AllDirectories). Where(Function(f) f.EndsWith(".pdf") OrElse f.EndsWith(".txt") OrElse f.EndsWith(".doc")) lbxArchivos.Items.Add(Path.GetFileNameWithoutExtension(archivo)) Next End If
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
Hola Cael1020,
Puedes obtener todos los archivos y mediante una expresión regular obtener los archivos que coincidan con el patrón.
For Each archivos As String In Directory.GetFiles(Label1.Text, "*.*", SearchOption.AllDirectories). Where(Function(f) Regex.IsMatch(f, "^.+\.(pdf|doc|txt)$")) ListBox1.Items.Add(Path.GetFileNameWithoutExtension(archivos)) Next
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -
Así a la vista es difícil decirlo. Para el ratón encima de la parte subrayada y lee el mensaje que te sale en el tooltip. Por ejemplo, podría ser que tengas una versión antigua de VB, de las que no permitían partir una sentencia en varias líneas sin añadir al final el carácter de continuación de sentencia. O puede ser que no tengas importado el espacio de nombres System.Linq y or eso no te admita el Where.
-
-
-
¿Que versión de .NET Framework tienes? ¿La versión de .Net Framework te permite el uso de LinQ? ¿Tienes declarado el uso del espacio de nombres de LinQ?
Imports System.Linq
La función EnumerateFiles() está disponible a partir de la versión 4 de .NET Framework, es posible que tengas una versión anterior, de ser el caso queda usar la función GetFiles()
For Each archivo As String In IO.Directory.GetFiles(
En caso la versión de .Net Framework no te permita hacer uso de LinQ (disponible a partir de la versión 3.5) una salida es validar la extensión en cada iteración:
Dim ListaExtensiones As New List(Of String)() From {".txt", ".pdf", ".doc"} Dim fbd As New FolderBrowserDialog() If fbd.ShowDialog() = DialogResult.OK Then lbxArchivos.Items.Clear() For Each archivo As String In IO.Directory.GetFiles( fbd.SelectedPath, "*.*", IO.SearchOption.AllDirectories) If ListaExtensiones.Contains(Path.GetExtension(archivo)) Then lbxArchivos.Items.Add(Path.GetFileNameWithoutExtension(archivo)) End If Next End If
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
-
ocupo NET Framework 2.0, si veo me presenta varios errores
Si el objetivo de los ejercicios es entrenamiento te recomiendo descargar una versión reciente, podrías descargar Visual Studio Community 2015.
En tanto, la clase List<T> está disponible desde la versión 2.0 de .NET Framework, no deberías tener problemas con el último código propuesto, ¿probaste ejecutar? ¿obtienes algún error?
- Editado Willams Morales lunes, 3 de octubre de 2016 19:13
-
-
entonces para esta versión como seria completo el código para ver la diferencia?
He colocado el código en el aporte anterior, lo vuelvo a poner:
Dim ListaExtensiones As New List(Of String)() From {".txt", ".pdf", ".doc"} Dim fbd As New FolderBrowserDialog() If fbd.ShowDialog() = DialogResult.OK Then lbxArchivos.Items.Clear() For Each archivo As String In IO.Directory.GetFiles( fbd.SelectedPath, "*.*", IO.SearchOption.AllDirectories) If ListaExtensiones.Contains(Path.GetExtension(archivo)) Then lbxArchivos.Items.Add(Path.GetFileNameWithoutExtension(archivo)) End If Next End If
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
-
Si perdón disculpe una pregunta si tuviera la ruta escrita en un TextBox, como cambiaría el Dialo.... por un TextBox
Dim ListaExtensiones As New List(Of String)() From {".txt", ".pdf", ".doc"} lbxArchivos.Items.Clear() For Each archivo As String In IO.Directory.GetFiles( txtRuta.Text, "*.*", IO.SearchOption.AllDirectories) If ListaExtensiones.Contains(Path.GetExtension(archivo)) Then lbxArchivos.Items.Add(Path.GetFileNameWithoutExtension(archivo)) End If Next
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Cael1020 lunes, 3 de octubre de 2016 20:20