|
<< Click to Display Table of Contents >> Classe ler_gravar config arquivo json |
![]() ![]()
|
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));
}
}
}