none
Eliminar carpeta en dirección me borra todo o nada RRS feed

  • Pregunta

  •  

    Foro, una vez más yo dando lata, deseo eliminar una capeta en un directorio, sería un subdirectorio, les muestro el código que utilizo y la explicación, este código lo coloqué en un Private Sub eliminarcarpeta() 

    Dim fold As String = users.Text
    System.IO.Directory.Delete("C:\test\" & fold)
    

    Este ejemplo me lanza un error que dice: que el directorio no está vacío 

     

    Dim fold As String = users.Text
    System.IO.Directory.Delete("C:\test\" & fold, True)
    

    En este ejemplo me borra todo el directorio, la carpeta test y todo lo que hay en ella

     

    Lo curioso es que si el delete lo cambio por el CreateDirecotry me crea la carpeta o el directorio sin problemas.
    A ver si me pueden dar una orientada porque ya no se por donde.


    De antemano Gracias y Saludos 

     

     

    miércoles, 8 de junio de 2011 3:17

Respuestas

  • es muy raro lo que comentas, porque he probado este codigo

    Dim path As String = "c:\MyDir"
    Dim subPath As String = "c:\MyDir\temp"


    If Directory.Exists(path) = False Then
        Directory.CreateDirectory(path)
    End If


    If Directory.Exists(subPath) = False Then
        Directory.CreateDirectory(SubPath)
    End If

    Directory.Delete(subPath, true)    

     

    y funciona perfectamente, elimina la sub carpeta, pero no el raiz, o sea deja la carpeta MyDir, prueba de eejcutar este codigo para visualziar lo que comento

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta jonsey10 domingo, 19 de junio de 2011 1:44
    jueves, 9 de junio de 2011 1:51

Todas las respuestas

  • Lo curioso es que si el delete lo cambio por el CreateDirecotry me crea la carpeta o el directorio sin problemas.

    o sea si usas el CreateDirectory() en lugar del Delete() pero cuando la carpeta tiene sunscarpata y contenido dentro ?

    o usas el CreateDirectory() luego de usar el Delete() ? porque lo comun es hacer esto ultimo, elimianr y luego usar el create

    recuerda que el CreateDirectory() crea al estrucra competa de carpeta

    si le pones

    Directory.CreateDirectory("c:\desarrollo\test1")

    este creara la carepta desarrollo pero tambien creara la de test1, o sea toda la estructura que definas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 8 de junio de 2011 3:23
  • Bueno ... mi problema es con el delete, lo de crear el directorio fue como algo que si me sale bien, pero los ejemplos de delete se supone que no hace lo que deseo hacer, borrar el subdirectorio este lleno o vacío y no todo el directorio.

    A ver si me dar una pista. Saludos !

    miércoles, 8 de junio de 2011 3:41
  • pero el

    deberia hacer esto que mencionas, revia el comentario del link alli explica justo esto que planteas
    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 8 de junio de 2011 3:47
  • Por favor, Leandro. Si no es mucho pedir, te agradecería que el contenido de los enlaces que indicas estuvieran en castellano, siempre y cuando existan en dicho idioma, como es el caso de la ayuda de MSDN.

    Directory.Delete (Método) (String, Boolean)

    Simplemente es cuestión de cambiar la cultura. En lugar de escribir en-us, cambia la dirección por es-es. ¡Fíjate que fácil!

    Simplemente te lo comento porque estamos en un foro en español de Visual Basic. Ahora bien, si no hay más remedio porque no existe una página en español, pues me parece estupendo que indiques enlaces a páginas inglesas o de otros idiomas. :-)

     

     


    Enrique Martínez
      [MS MVP - VB]

    miércoles, 8 de junio de 2011 15:21
    Moderador
  • "jonsey10" escribió:

    > pero los ejemplos de delete se supone que no hace lo que deseo hacer,
    > borrar el subdirectorio este lleno o vacío y no todo el directorio.

    La verdad es que no me entero exactamente lo que deseas eliminar. Si deseas eliminar una subcarpeta existente en una carpeta, esté llena o vacía, tienes que espeficar el valor True en el segundo parámetro del método Delete.

    Por ejemplo, queremos eliminar la subcarpeta Temp, y todo su contenido, existente en la carpeta C:\Test:

          System.IO.Directory.Delete("C:\Test\Temp", True)

    Ahora, tienes que sustituir el valor de la subcarpeta Temp por la variable fold, tal y como lo estás haciendo. No veo donde está el problema. ¿?

    Un saludo

     

     

     

     

     


    Enrique Martínez
      [MS MVP - VB]

    miércoles, 8 de junio de 2011 15:30
    Moderador
  •  

    Enrique, que tal, gracias por tu contestación pero la linea que colocas:

       System.IO.Directory.Delete("C:\Test\Temp", True)

    Si elimina, pero todo el directorio, elimina Test y Temp y todo lo que hay en Test.

    Siendo que, como bien dices solo debería eliminar Temp ... igual no que estoy haciendo mal o podría haber una configuración ... lo seguiré intentando a ver que si se arregla. 

     

    Saludos. 

     

     

    jueves, 9 de junio de 2011 1:44
  • es muy raro lo que comentas, porque he probado este codigo

    Dim path As String = "c:\MyDir"
    Dim subPath As String = "c:\MyDir\temp"


    If Directory.Exists(path) = False Then
        Directory.CreateDirectory(path)
    End If


    If Directory.Exists(subPath) = False Then
        Directory.CreateDirectory(SubPath)
    End If

    Directory.Delete(subPath, true)    

     

    y funciona perfectamente, elimina la sub carpeta, pero no el raiz, o sea deja la carpeta MyDir, prueba de eejcutar este codigo para visualziar lo que comento

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta jonsey10 domingo, 19 de junio de 2011 1:44
    jueves, 9 de junio de 2011 1:51
  •  

    Ok, pues he probado el código que puse al principio y que me han ratificado que está bien, pero aquí esta lo raro, en Windows Server 2008 me borra todo pero en Windows XP me borra el subdirectorio, ahora, el código que me pasaste al final funciona de la misma manera ....

    Que puede estar pasando? 

    La verdad si esta raro ....

    viernes, 10 de junio de 2011 0:53
  • la verdad es muy extraño

    estas seguro quee s el mismo codigo que ejecutas en ambas PCs ?

    te comnento porque para agregar a la lista yo probe el codigo que puse en el mensaje anterior con Win 7 y funciona

    me suena raro que cambien el comportamiento por el SO, revisa la prueba que has realizado, trata que sea el mismo codigo que ejecutas

     


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 10 de junio de 2011 2:30
  •  

    Pues no .... ya le puse de una y varias formas y me borra todo el directorio en Windows Server 2008, bueno creo que algo está pasando porque pongo este código:

    Private Sub deletefold()
    
    Dim fold As String = textbox1.text
    Dim path As String = "C:\inetpub\wwwroot\in\IndexDirectory\" & fold
    
    Directory.Delete(path, True)
    
    End Sub 
    


    El código solo me elimina desde  IndexDirectory\" & fold - es decir, me respeta hasta todo esto C:\inetpub\wwwroot\in\ ... pero lo que le sigue lo elimina, no se
    pero algo he de hacer para que el código jale bien...

    Como vez ?? 

    sábado, 11 de junio de 2011 2:58
  •  

    Pues no .... ya le puse de una y varias formas y me borra todo el directorio en Windows Server 2008, bueno creo que algo está pasando porque pongo este código:

     

    Private Sub deletefold()
    
    Dim fold As String = textbox1.text
    Dim path As String = "C:\inetpub\wwwroot\in\IndexDirectory\" & fold
    
    Directory.Delete(path, True)
    
    End Sub 
    

     


    El código solo me elimina desde  IndexDirectory\" & fold - es decir, me respeta hasta todo esto C:\inetpub\wwwroot\in\ ... pero lo que le sigue lo elimina, no se
    pero algo he de hacer para que el código jale bien...

    Como vez ?? 

     

     

    Pues no doy, al inicio me borraba todo el directorio y luego solo parte del subdirectorio y no se que hacer, creo que esta ya me la rifaré de otra manera ... Saludos. 

     

     

    miércoles, 15 de junio de 2011 1:33
  • Bueno, después de jalarme los pelos de la cabeza un rato no me quedó de otra mas que prueba y error, el código esta bien, todas las líneas que se escribieron están bien, pero el Win Server 2008 el chiste es que en el Win Explorer > Clic derecho > pestaña Seguridad .... etc, etc., al usuario clave se le deben dar dos permisos, no solo el de escritura sino también el de Modificar. 

     

    Saludos. 

    domingo, 19 de junio de 2011 1:44