none
Escribir en ciertas posiciones dentro de un fichero .txt RRS feed

  • Pregunta

  • Buenos días a todos,

    Sabría alguien decirme como puedo escribir por ejemplo tres variables en tres posiciones diferentes dentro de un fichero de texto?

    Ejemplo:

    Nombre -- posición 0

    DNI -- posición 43

    Domicilio -- posición 20

    1000 gracias

    martes, 18 de septiembre de 2018 10:09

Respuestas

  • Si sabes que la posicion va a ser fija (por ejemplo, donde dices "DNI -- posición 43"), entonces puedes hacerlo con un FileStream.

    Las instrucciones son basicamente las siguientes:

    1) Instancia un objeto FileStream (en el espacio de nombres System.IO) y pasale en el constructor el fichero que quieres abrir, y la opcion de abrirlo en lectura/escritura.

    2) Usa el metodo Seek del FileStream para "moverte" a la posicion deseada.

    3) usa el metodo Write para escribir el dato deseado en esa posicion.

    4) Sigue haciendo Seek y Write para escribir el resto de los datos deseados.

    5) Recuerda cerrar el FileStream cuando hayas terminado.

    En lo anterior exste una dificultad, y es que el Write requiere pasarle un array de bytes con el dato a escribir, pero seguramente tus datos no los tienes como bytes sino como String. Puedes hacer la conversion de String a Bytes usando System.Text.Encoding.UTF8.GetBytes(laCadena).  Cambia UTF8 por el juego de caracteres que sea requerido por tu fichero de texto.

    Ojo, esto supone que existe suficiente "hueco" en el archivo para que "quepa" el texto deseado en la posicion indicada. No funcionara si el fichero no tiene ya reservado ese espacio.

    • Marcado como respuesta Juan Martinez F martes, 18 de septiembre de 2018 12:53
    martes, 18 de septiembre de 2018 12:02

Todas las respuestas

  • Debes ser un poco más especifico, a que te refieres con un fichero de texto? Label, textbox?, de donde proviene la información nombre dni domicilio, tienes otros campos donde ingresas esta información manualmente? 


    Julián Jaramillo

    martes, 18 de septiembre de 2018 11:12
  • Hola Juan Martinez F:

    Te dejo un enlace a un buen documento, que postearon en la página de el Guille, donde te explica como se pueden leer y excribir los archivos de texto en c# o Visual Basic.

    Un saludo

    martes, 18 de septiembre de 2018 11:52
  • Si sabes que la posicion va a ser fija (por ejemplo, donde dices "DNI -- posición 43"), entonces puedes hacerlo con un FileStream.

    Las instrucciones son basicamente las siguientes:

    1) Instancia un objeto FileStream (en el espacio de nombres System.IO) y pasale en el constructor el fichero que quieres abrir, y la opcion de abrirlo en lectura/escritura.

    2) Usa el metodo Seek del FileStream para "moverte" a la posicion deseada.

    3) usa el metodo Write para escribir el dato deseado en esa posicion.

    4) Sigue haciendo Seek y Write para escribir el resto de los datos deseados.

    5) Recuerda cerrar el FileStream cuando hayas terminado.

    En lo anterior exste una dificultad, y es que el Write requiere pasarle un array de bytes con el dato a escribir, pero seguramente tus datos no los tienes como bytes sino como String. Puedes hacer la conversion de String a Bytes usando System.Text.Encoding.UTF8.GetBytes(laCadena).  Cambia UTF8 por el juego de caracteres que sea requerido por tu fichero de texto.

    Ojo, esto supone que existe suficiente "hueco" en el archivo para que "quepa" el texto deseado en la posicion indicada. No funcionara si el fichero no tiene ya reservado ese espacio.

    • Marcado como respuesta Juan Martinez F martes, 18 de septiembre de 2018 12:53
    martes, 18 de septiembre de 2018 12:02
  • Muchas gracias Alberto.

    Pero ya di con ello.

    martes, 18 de septiembre de 2018 12:54
  • hola

    no hay una forma de escribir directo en una posicion, sino que debes reconstruir el archivo

    lo que recomendaria uses es el

    Dim lineas() As String = File.ReadAllLines("ruta")

    entonces podras iterar las lineas usando

    ForEach line In lineas

    Next

    para al final grabar reemplazando

    File.WriteAllLines("ruta", lineas)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 18 de septiembre de 2018 13:03