elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿Cuál es el mejor archivo para guardar y recuperar datos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cuál es el mejor archivo para guardar y recuperar datos?  (Leído 5,363 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
¿Cuál es el mejor archivo para guardar y recuperar datos?
« en: 11 Febrero 2023, 19:41 pm »

Hola:

Antes usaba muchos el XML para guardar y leer datos que tenía en el formulario. Por ejemplo en este caso.



Código:
using System;
using System.Windows.Forms;
using System.Xml;

namespace Guardar_y_cargar_datos_en_archivo_xml
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // Guarda los datos introducidos a parte de crear el archivo "miXML.xml".
        private void button_Guardar_Click(object sender, EventArgs e)
        {
            XmlWriter w = XmlWriter.Create("miXML.xml");
            w.WriteStartElement("MiInfo");
            w.WriteElementString("TextBox", textBox1.Text);
            w.WriteElementString("CheckBox", checkBox1.Checked.ToString());
            w.WriteElementString("radioButton1", radioButton1.Checked.ToString());
            w.WriteElementString("radioButton2", radioButton2.Checked.ToString());
            w.WriteEndElement();
            w.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                XmlReader r = XmlReader.Create("miXML.xml");
                r.ReadStartElement("MiInfo");
                textBox1.Text = r.ReadElementContentAsString();
                checkBox1.Checked = Convert.ToBoolean(r.ReadElementContentAsString());
                radioButton1.Checked = Convert.ToBoolean(r.ReadElementContentAsString());
                radioButton2.Checked = Convert.ToBoolean(r.ReadElementContentAsString());
                r.ReadEndElement();
                r.Close();
            }
            catch (Exception)
            {

                //
            }

        }
    }
}

El archivo se genera en el disco duro o SSD hoy en día y pone esto.

Código:
<MiInfo>
<TextBox>Texto y textos</TextBox>
<CheckBox>True</CheckBox>
<radioButton1>False</radioButton1>
<radioButton2>True</radioButton2>
</MiInfo>

Me funciona de maravilla para lo que es el XML y me lo recomendaron en este foro hace años, desde el 2.008.

Ahora, veo mucho con el santo JSON.

¿Es recomendable usar el JSON?

Si es cierto o no. Quiero hacer el mismo ejemplo de recuperar y guardar datos como se hizo el XML.

Saludos.


En línea

Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #1 en: 11 Febrero 2023, 23:20 pm »

Bueno para estos casos es mejor revisar las recomendaciones de Microsoft en su documentación... Pero tengo entendido que JSON es muy utilizado actualmente, aunque XML también persiste.
No es el caso de BinaryFormatter por ejemplo, que está obsoleto y no recomendado, debido a las vulnerabilidades que tiene.


En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #2 en: 12 Febrero 2023, 00:11 am »

No sabria decirte, pero en mi caso yo siempre uso JSON . Puedes usar la popular libreria : Newtonsoft.Json , aunque yo siempre uso la que te suministra el .net framework 'System.Web.Extensions' (JavaScriptSerializer) 


En línea



Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #3 en: 12 Febrero 2023, 08:09 am »

Gracias por responder.

Y unas preguntas que hago.

1. En Visual Studio Community 2022 tiene su propio XML dentro sin usar librerías externas. ¿A estas alturas hay qué usar librerías externas para JSON?

2. Mi propuesta es hacer el mismo ejemplo del primer post que está hecho con xml. Lo que puse en el formulario es, un checBox, dos radioButton y un textBox y un Button para guadar datos que introduzco, le doy al botón Guardar, si no encuentra un archivo.xml, lo crea y guarda los datos. Al abrir el programa, localiza el archivo.xml con sus datos guardados y los lee, al final, los datos leídos se muestra en Windows Form como indica arriba y funciona de maravilla.

¿Pueden ayudarme hacer el mismo ejemplo pero en json?

Muchas gracias.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #4 en: 12 Febrero 2023, 12:13 pm »



Diferencia en XML y JSON.

En XML se me guarda así.
Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <MiInfo>
  3.     <TextBox>Hola.</TextBox>
  4.     <CheckBox>True</CheckBox>
  5.     <radioButton1_Luz_ON>False</radioButton1_Luz_ON>
  6.     <radioButton2_Luz_OFF>True</radioButton2_Luz_OFF>
  7. </MiInfo>

Deduzco que en JSON sería así.
Código
  1. {
  2.     "MiInfo":
  3.             {
  4.                 "TextBox": "Hola.",
  5.                 "CheckBox": "True",
  6.                 "radioButton1_Luz_ON": "False",
  7.                 "radioButton2_Luz_OFF": "True"
  8.             }
  9. }

 A parte que se nota más legible para el humano, tiene menor peso.

Solo me toca aprender como se guarda y lee archivos json.
 :D
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #5 en: 15 Febrero 2023, 23:11 pm »

Intento guardar datos pero me da errores.

System.IO.DirectoryNotFoundException: 'Could not find a part of the path 'C:\temp\Ejemplo.json'.'


 
Código
  1. using Newtonsoft.Json;
  2.  
  3. namespace Guardar_y_cargar_datos_en_archivo.json_.NET_7._0
  4. {
  5.  
  6.    public partial class Form1 : Form
  7.    {
  8.        public Form1()
  9.        {
  10.            InitializeComponent();
  11.        }
  12.  
  13.        class MiInfo
  14.        {
  15.            public string? TextBox { get; set; }
  16.            public bool CheckBox { get; set; }
  17.            public bool RadioButton1_Luz_ON { get; set; }
  18.            public bool RadioButton1_Luz_OFF { get; set; }
  19.        }
  20.  
  21.        void SalvarDatos()
  22.        {
  23.            MiInfo miInfo = new()
  24.            {
  25.                TextBox = this.textBox1.Text,
  26.                CheckBox = this.checkBox1.Checked,
  27.                RadioButton1_Luz_ON = this.radioButton1.Checked,
  28.                RadioButton1_Luz_OFF = this.radioButton2.Checked
  29.            };
  30.  
  31.            try
  32.            {
  33.                Directory.CreateDirectory(@"C:\temp");
  34.                string serializado = JsonConvert.SerializeObject(miInfo);
  35.                File.WriteAllText(@"C:\temp\Ejemplo.json", serializado);
  36.            }
  37.            catch { }
  38.        }
  39.  
  40.        void RecuperarDatos()
  41.        {
  42.            string serializado = File.ReadAllText(@"C:\temp\Ejemplo.json");
  43.            MiInfo miInfo = (MiInfo)JsonConvert.DeserializeObject(serializado);
  44.  
  45.            this.textBox1.Text = miInfo.TextBox;
  46.            this.checkBox1.Checked = miInfo.CheckBox;
  47.            this.radioButton1.Checked = miInfo.RadioButton1_Luz_ON;
  48.            this.radioButton2.Checked = miInfo.RadioButton1_Luz_OFF;
  49.        }
  50.  
  51.        private void button_Guardar_Click(object sender, EventArgs e)
  52.        {
  53.            SalvarDatos();
  54.        }
  55.  
  56.        private void Form1_Load(object sender, EventArgs e)
  57.        {
  58.            RecuperarDatos();
  59.        }
  60.    }
  61. }
En línea

Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #6 en: 16 Febrero 2023, 01:56 am »

mm que raro, probaste a ver que te devuelve:

Código
  1. Directory.Exists()

aveces pueden ser tambien cuestiones de permiso de administrador


En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #7 en: 18 Febrero 2023, 08:04 am »

Holas:

Para no volverme loco, mejor quito la parte de crear directorio y lo dejo solo el archivo que crea y lee al lado del exe.

Sigue con fallos.

System.NullReferenceException: 'Object reference not set to an instance of an object.'



Código
  1. using Newtonsoft.Json;
  2.  
  3. namespace Guardar_y_cargar_datos_en_archivo.json_.NET_7._0
  4. {
  5.  
  6.    public partial class Form1 : Form
  7.    {
  8.        public Form1()
  9.        {
  10.            InitializeComponent();
  11.        }
  12.  
  13.        class MiInfo
  14.        {
  15.            public string? TextBox { get; set; }
  16.            public bool CheckBox { get; set; }
  17.            public bool RadioButton1_Luz_ON { get; set; }
  18.            public bool RadioButton2_Luz_OFF { get; set; }
  19.        }
  20.  
  21.        void SalvarDatos()
  22.        {
  23.            MiInfo miInfo = new()
  24.            {
  25.                TextBox = this.textBox1.Text,
  26.                CheckBox = this.checkBox1.Checked,
  27.                RadioButton1_Luz_ON = this.radioButton1.Checked,
  28.                RadioButton2_Luz_OFF = this.radioButton2.Checked
  29.            };
  30.  
  31.            try
  32.            {
  33.                string serializado = JsonConvert.SerializeObject(miInfo);
  34.                File.WriteAllText(@"Ejemplo.json", serializado);
  35.            }
  36.            catch {}
  37.        }
  38.  
  39.        void RecuperarDatos()
  40.        {
  41.            string serializado = File.ReadAllText(@"Ejemplo.json");
  42.            MiInfo miInfo = (MiInfo)JsonConvert.DeserializeObject(serializado);
  43.  
  44.            this.textBox1.Text = miInfo.TextBox;
  45.            this.checkBox1.Checked = miInfo.CheckBox;
  46.            this.radioButton1.Checked = miInfo.RadioButton1_Luz_ON;
  47.            this.radioButton2.Checked = miInfo.RadioButton2_Luz_OFF;
  48.        }
  49.  
  50.        private void button_Guardar_Click(object sender, EventArgs e)
  51.        {
  52.            SalvarDatos();
  53.        }
  54.  
  55.        private void Form1_Load(object sender, EventArgs e)
  56.        {
  57.            RecuperarDatos();
  58.        }
  59.    }
  60. }

No sabía que crear un json y leer fueran tan complicado, ejjejejeje.

A ver si con el tiempo lo sacamos.

Gracias. ;)
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cuál es el mejor archivo para guardar y recuperar datos?
« Respuesta #8 en: 19 Febrero 2023, 09:42 am »

Ya funciona, lo dejo aquí por si alguien lo necesita.
Código
  1. using Newtonsoft.Json;
  2.  
  3. namespace Guardar_y_cargar_datos_en_archivo.json_.NET_7._0
  4. {
  5.  
  6.    public partial class Form1 : Form
  7.    {
  8.        public Form1()
  9.        {
  10.            InitializeComponent();
  11.        }
  12.  
  13.        class MiInfo
  14.        {
  15.            public string? TextBox { get; set; }
  16.            public bool CheckBox { get; set; }
  17.            public bool RadioButton1_Luz_ON { get; set; }
  18.            public bool RadioButton2_Luz_OFF { get; set; }
  19.        }
  20.  
  21.        void SalvarDatos()
  22.        {
  23.            MiInfo miInfo = new()
  24.            {
  25.                TextBox = textBox1.Text,
  26.                CheckBox = checkBox1.Checked,
  27.                RadioButton1_Luz_ON = radioButton1.Checked,
  28.                RadioButton2_Luz_OFF = radioButton2.Checked
  29.            };
  30.  
  31.            try
  32.            {
  33.                string serializado = JsonConvert.SerializeObject(miInfo);
  34.                File.WriteAllText(@"Ejemplo.json", serializado);
  35.            }
  36.            catch {}
  37.        }
  38.  
  39.        void RecuperarDatos()
  40.        {
  41.            if (File.Exists(@"Ejemplo.json"))
  42.            {
  43.                string serializado = File.ReadAllText(@"Ejemplo.json");
  44.                //MiInfo miInfo = (MiInfo)JsonConvert.DeserializeObject(serializado);
  45.                MiInfo miInfo = JsonConvert.DeserializeObject<MiInfo>(serializado);
  46.                if (miInfo != null)
  47.                {
  48.                    textBox1.Text = miInfo.TextBox;
  49.                    checkBox1.Checked = miInfo.CheckBox;
  50.                    radioButton1.Checked = miInfo.RadioButton1_Luz_ON;
  51.                    radioButton2.Checked = miInfo.RadioButton2_Luz_OFF;
  52.                }
  53.            }
  54.        }
  55.  
  56.        private void button_Guardar_Click(object sender, EventArgs e)
  57.        {
  58.            SalvarDatos();
  59.        }
  60.  
  61.        private void Form1_Load(object sender, EventArgs e)
  62.        {
  63.            RecuperarDatos();
  64.        }
  65.    }
  66. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines