CLR: .Net / Mono / Boo / Otros CLR > C#

 Editar Una Vcard

(1/2) > >>

Gandalf_malaga7:
Hola amigos,

tras buscar en el foro y no encontrar nada relacionado,tengo la siguiente duda:

supongo que sabréis lo que es una Vcard (un archivo con extensión vcf), bueno pues los que yo estoy usando,si lo abres con el bloc de notas tienen la siguiente pinta:

BEGIN:VCARD
VERSION:2.1
N:GANDALF
NOTE;ENCODING=QUOTED-PRINTABLE: Les deseo Feliz Año a todos
END:VCARD

donde pone "Les deseo Feliz año a todos",es el mensaje que se lee en la Vcard.Bien,pues yo este mensaje lo leo de una BBDD como una string.Lo que necesito es modificar el mensaje que hay en la VCard,escribiendo el nuevo mensaje que haya leido de la BBDD.Es decir,si ahora leo de la BBDD,y el nuevo mensaje es "Hola amigos de elguille",la Vcard al abrirla desde el bloc de notas debe quedar así:

BEGIN:VCARD
VERSION:2.1
N:GANDALF
NOTE;ENCODING=QUOTED-PRINTABLE: Hola amigos de Foros de SoloCodigo
END:VCARD

espero haberme explicado bien,

un saludo amigos!!!!!!

Güorker:
Hola,

Lo que tendrías que hacer es utilizar las Clases StreamReader y StreamWriter para modificar el archivo.

Mira esto: StreamReader

En esa pagina vienn ejemplos muy sencillos de entender para leer y escribir en archivos.

Saludos

Gandalf_malaga7:
Hola de nuevo :hola: ,he hecho lo siguiente:



--- Código: Text --- private bool editaVcard(string mensaje)     {      string LogFile = "vcard.vcf";      string linea1 = "BEGIN:VCARD";      string linea2 = "VERSION:2.1";      string linea3 = "N:GANDALF";      string linea4 = "NOTE;ENCODING=QUOTED-PRINTABLE: " + mensaje;      string linea5 = "END:VCARD";            StreamWriter temp= File.CreateText(LogFile);      temp.Close();      StreamWriter sw = File.AppendText(LogFile);       try      {        sw.WriteLine(linea1);        sw.WriteLine(linea2);        sw.WriteLine(linea3);        sw.WriteLine(linea4);        sw.WriteLine(linea5);        return true;      }      catch      {        return false;      }      finally      {        sw.Flush();        sw.Close();      }    }  
y funcionar funicona.Cada vez que llamo a la función y le paso una cadena,crea una nueva vcard que sobreescribe a la anterior,modificando sólo el mensaje.Me gustaría que me comentaráis si es correcto lo que he hecho,y si hay una forma más correca de realizar esto,

muchas gracias de nuevo,

salu2!!!!!!! :kicking:

Güorker:
Hola,

Creo que no te hace falta crear 2 StreamWriters.
puedes utilizar el mismo StreamWriter "temp" para crear el archivo y escribir texto en el.

Saludos

Gandalf_malaga7:
Hola Güorker!!!!!! :hola:

si,tienes razón :smartass: ,puedes usar un sólo StreamWriter,ahora lo he hecho así:


--- Código: Text --- private bool editaVcard(string mensaje)     {      string LogFile = "vcard.vcf";      string linea1 = "BEGIN:VCARD";      string linea2 = "VERSION:2.1";      string linea3 = "N:GANDALF";      string linea4 = "NOTE;ENCODING=QUOTED-PRINTABLE: " + mensaje;      string linea5 = "END:VCARD";      StreamWriter sw = File.CreateText(LogFile);      sw.Close();      sw = File.AppendText(LogFile);      try      {        sw.WriteLine(linea1);        sw.WriteLine(linea2);        sw.WriteLine(linea3);        sw.WriteLine(linea4);        sw.WriteLine(linea5);        return true;      }      catch      {        return false;      }      finally      {        sw.Flush();        sw.Close();      }    }  
y funciona también,lo que no se debe olvidar es cerrarlo,antes de abrirlo para una nueva función.Por otro lado,tengo una duda,esta porción de código:


--- Código: Text --- string LogFile = "vcard.vcf";      string linea1 = "BEGIN:VCARD";      string linea2 = "VERSION:2.1";      string linea3 = "N:GANDALF";      string linea4 = "NOTE;ENCODING=QUOTED-  
se puede realizar de forma más elegante??,es decir,meter todo en un solo string con saltos de carro,

muchas gracias y salu2 colegas!!!!! :kicking:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa