Classe ler_gravar config arquivo json

<< Click to Display Table of Contents >>

Navigation:  Início >

Classe ler_gravar config arquivo json

Previous pageReturn to chapter overviewNext page

Como usar (main program)

 

using System;

 

  class Program

   {

      static string ARQUIVO = "c:\\temp\\config.txt";

 

      static void GravarConfiguracao()

       {

           Configuracao s = new Configuracao(ARQUIVO);

 

           s.AddStr("Nome", "Junior");

           s.AddInt("IDADE", 42);

           s.AddBool("ativo", false);

           s.AddDecimal("salario", (decimal)12345.67);

           s.AddDateTime("nasc", new DateTime(1977, 7, 2, 16, 10, 2));

 

           s.Salvar();

       }

 

      static void LerConfiguracao()

       {

           Configuracao s = new Configuracao(ARQUIVO);

 

           Console.WriteLine("Str = " + s.GetStr("nome"));

           Console.WriteLine("Int = " + s.GetInt("idade").ToString());

           Console.WriteLine("Bool = " + (s.GetBool("Ativo", true) ? "true" : "false"));

           Console.WriteLine("Decimal = " + s.GetDecimal("Salario").ToString("#,##0.00"));

           Console.WriteLine("Date = " + s.GetDateTime("Nasc", DateTime.Now).ToString());

       }

 

 

      static void Main(string[] args)

       {

           GravarConfiguracao();

           LerConfiguracao();        

           Console.ReadLine();

       }

   }

 

Saída (console)

 

Str = Junior
Int = 42
Bool = false
Decimal = 12.345,67
Date = 02/07/1977 16:10:02

 

Arquivo gerado (c:\temp\config.txt)

 

{"nome":"Junior","idade":"42","ativo":"0","salario":"12345,67","nasc":"02/07/1977 16:10:02"}

 

Classe Configuracao.cs

 

using System;

using System.Collections.Generic;

using System.IO;

using System.Web;

using System.Web.Script.Serialization;

using Visual.classes;

 

namespace MarketBI.main.classes

{

  public class Configuracao

   {

      private string arquivo;

      private Dictionary<string, string> Lista;

 

      /// <summary>

      /// Inicializa um arquivo de configuração para ler e salvar um dictionary em formato JSON

      /// </summary>

      /// <param name="NomeArquivo">Caminho físico. Não use virtual</param>

      public Configuracao(string NomeArquivo)

       {

          this.arquivo = NomeArquivo;

 

          // se o arquivo já existe vamos carregar ele

          if (File.Exists(this.arquivo))

           {

               Lista = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(File.ReadAllText(this.arquivo));

           }

          else

           {

              // se não existe cria um dicionário novo

               Lista = new Dictionary<string, string>();

           }

       }

 

      public void AddStr(string chave, string valor)

       {

          // se já contém a chave, simplesmente troca o valor

          if (Lista.ContainsKey(chave.ToLower()))

           {

               Lista[chave.ToLower()] = valor;

           }

          else

           {

              // não existe acrescenta

               Lista.Add(chave.ToLower(), valor);

           }

       }

 

      public string GetStr(string chave, string def = "")

       {

          // se já contém a chave, retorna o valor (ou default se for nulo)

          if (Lista.ContainsKey(chave.ToLower()))

           {

              return Lista[chave.ToLower()] ?? def;

           }

          else

           {

              // não existe a chave retorna valor default

              return def;

           }

       }

 

      public void AddInt(string chave, int valor)

       {

          this.AddStr(chave, valor.ToString());

       }

 

      public int GetInt(string chave, int def = 0)

       {

          string v = this.GetStr(chave, def.ToString());

 

          int i;

          if (!int.TryParse(v, out i))

               i = 0;

          return i;

       }

 

      public void AddBool(string chave, bool valor)

       {

          this.AddInt(chave, valor ? 1 : 0);

       }

 

      public bool GetBool(string chave, bool def = false)

       {

          return this.GetInt(chave, def ? 1 : 0) != 0;

       }

 

      public void AddDecimal(string chave, decimal valor)

       {

          this.AddStr(chave, valor.ToString());

       }

 

      public decimal GetDecimal(string chave, decimal def = 0)

       {

          string s = this.GetStr(chave, def.ToString());

 

          decimal d = 0;

          if (!decimal.TryParse(s, out d))

               d = 0;

          return d;

       }

 

      public void AddDateTime(string chave, DateTime valor)

       {

          this.AddStr(chave, valor.ToString());

       }

 

      public DateTime GetDateTime(string chave, DateTime def)

       {

          string st = this.GetStr(chave, def.ToString());

 

           DateTime dt;

          if (!DateTime.TryParse(st, out dt))

               dt = def;

          return dt;

       }

 

      public void Salvar()

       {

           File.WriteAllText(this.arquivo, new JavaScriptSerializer().Serialize(Lista));

       }

   }

}