none
Copiar los datos de un elemento TextFile1.txt al disco RRS feed

  • Pregunta

  • Hola.

    He agregado un nuevo elemento TextFile1.txt y le he añadido algunas lineas de texto.

    Pero no se como copiar los datos contenidos enel elemento TextFile1.txt, a una carpeta diferente.

    No me sirve Copiar Siempre de las Propiedades del elemento

    Muchas gracias por su ayuda.

    martes, 16 de febrero de 2016 1:49

Respuestas

  • "Rafaele FM" escribió:

    > He agregado un nuevo elemento TextFile1.txt y le he añadido algunas lineas de texto.
    >
    > Pero no se como copiar los datos contenidos enel elemento TextFile1.txt, a una carpeta diferente.
    >
    > No me sirve Copiar Siempre de las Propiedades  del elemento

    Hola:

    ¿Te refieres a que has añadido un archivo de texto llamado TextFile1.txt a tu proyecto? Si es así, selecciona el archivo en el Explorador de soluciones, y pulsa F4 para abrir sus Propiedades. Deja los valores de éstas como aparece en la siguiente imagen:


    Ahora, cuando desees crear un nuevo archivo con los datos existentes en el archivo de recursos, ejecuta lo siguiente:

    Imports System.IO
    Imports System.Reflection
    Imports System.Resources
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Dim st As Stream = Nothing
            Dim buffer As Byte()
    
            Try
                ' Referenciamos el ensamblado actual.
                Dim asm As Assembly = Assembly.GetExecutingAssembly()
    
                ' Referenciamos al recurso llamado TextFile1.txt.
                Dim name As String = asm.GetName().Name & "." & "TextFile1.txt"
    
                ' Cargamos en una secuencia los datos del recurso.
                st = asm.GetManifestResourceStream(name)
    
                ' Creamos una matriz con la longitud de la secuencia.
                Dim length As Int32 = CInt(st.Length)
                buffer = New Byte(length - 1) {}
    
                ' Rellenamos la matriz con los datos de la secuencia.
                st.Read(buffer, 0, length)
    
                ' Ruta del archivo.
                Dim fileName As String = "C:\Temporal\Archivo.txt"
    
                ' Creamos el archivo. Si éste ya existe, se producirá una excepción.
                Using stream As New FileStream(fileName, FileMode.CreateNew, FileAccess.Write)
                    ' Guardamos en el archivo los datos de la matriz anterior.
                    stream.Write(buffer, 0, length)
                End Using
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            Finally
                If (Not st Is Nothing) Then
                    st.Close()
                    st = Nothing
                End If
    
                buffer = Nothing
    
            End Try
    
        End Sub
    

    Observa la siguiente línea:

        ' Ruta del archivo.
        Dim fileName As String = "C:\Temporal\Archivo.txt"

    Ahí deberás de escribir la ruta donde se creará el nuevo archivo. Te comento que tal y como está implementado el ejemplo, se producirá una excepción si en la carpeta ya existe un archivo con el mismo nombre. Si deseas eliminarlo para que no se produzca la excepción, después de la declaración de la variable 'fileName' ejecutarías:

        If (File.Exists(fileName)) Then
            ' Eliminar el archivo
            File.Delete(fileName)
        End If

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    sábado, 20 de febrero de 2016 19:09
    Moderador