Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Criar um post de Mensagens sem utilizar banco de dados e sim arquivos.



Data Publicação: 12/5/2007 10:20:19
Total de visualizações: 2190

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


Olá a todos, neste artigo irei mostrar como criar um arquivo, escrever nele e depois carrega-los em um GridView.

Vamos criar um espaço para que o usuário digite uma mensagem no seu site e ao invés de salvar as informações em um banco de dados vamos criar um arquivo e salvar a mensagem neste arquivo. Depois vamos listar todas as mensagens enviadas para você.

Utilizarei o conceito de generics também, que vocês já devem conhecer. Ok!

 

Vamos lá, crie um novo WebSite. Adicione uma nova pasta no site com o nome Mensagens para onde enviarei os arquivos com as mensagens.

 

Monte a tela da seguinte forma.

 

 

 

 

 

Código HTML do GridView

 

<asp:GridView ID="grdMsg" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4" GridLines="Horizontal" ShowHeader="False">

<FooterStyle BackColor="White" ForeColor="#333333" />

<RowStyle BackColor="White" ForeColor="#333333" />

<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />

<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />

<Columns>

            <asp:TemplateField>

                  <ItemTemplate>

                        Enviada por:

                        <%# Eval("Nome")%>

                        <br />

                        <b>

                            <%# Eval("Msg") %>

                        </b>

                        <br />

                        Data de Envio:

                        <%# Eval("DT_Envio") %>

                 </ItemTemplate>

             </asp:TemplateField>

         </Columns>

 </asp:GridView>

 

Vamos criar uma classe Mensagem. Segue:

 

using System;

 

/// <summary>

/// Summary description for Mensagem

/// </summary>

public class Mensagem

{

      public Mensagem()

      {

      }

 

    private string nome;

    private string msg;

    private DateTime dtEnvio;

 

    public string Nome

    {

        get { return nome; }

        set { nome = value; }

    }

      

    public string Mensagem

    {

        get { return msg; }

        set { msg = value; }

    }

 

    public DateTime DT_Envio

    {

        get { return dtEnvio; }

        set { dtEnvio = value; }

    }

}

 

Após criar o objeto vamos criar os métodos para salvar a mensagem.

 

Método que recebe um objeto do tipo Mensagem, cria o arquivo armazena as informações nele

e salva na pasta que criamos chamada Mensagens.

 

private void AddMensagem(Mensagem msg)

    {

        // Variável que recebe o caminho da pasta Mensagem no servidor

        string pastNome = Server.MapPath("Mensagens");

 

        // Para darmos o nome do arquivo vamos utilizar a

        // propriedade Ticks da hora atual mais a classe

        // Random que irá pegar números aleatórios até 100.

        Random random = new Random();

        string fileName = pastNome + @"\";

  fileName += DateTime.Now.Ticks.ToString() + random.Next(100).ToString();

      

        // Cria o arquivo

        FileInfo newFile = new FileInfo(fileName);

       

        // Para escrever no arquivo vamos utilizar

        // a classe StreamWriter

        StreamWriter w = newFile.CreateText();

 

        // Neste momento vamos escrever as informações da

        // mensagem no arquivo

        w.WriteLine(msg.Nome);

        w.WriteLine(msg.DT_Envio.ToString());

        w.WriteLine(msg.Msg);

        w.Flush();

        w.Close();

    }

 

 

Agora vamos fazer o método do botão Enviar que irá criar uma mensagem

e passar como parâmetro do método AddMensagem.

 

protected void btnEnviar_Click(object sender, EventArgs e)

    {

        // Cria um novo objeto Mensagem

        Mensagem msg = new Mensagem();

 

        // Add os valores digitados ao objeto

        msg.Nome = txtNome.Text;

        msg.DT_Envio = DateTime.Now;

        msg.Msg = txtMsg.Text;

 

        // Chama o método para salvar a mensagem

        AddMensagem(msg);

 

    }

 

Após Salvar a mensagem vamos criar os métodos para trazer todas as

mensagens e listá-las no grdMsg.

 

Agora nós vamos ter que abrir todos os arquivos le as informações

contidas nele e transformá-lo em um objeto do tipo Mensagem e para isso

vamos utilizar o seguinte método que recebe o arquivo e retorna a Mensagem:

 

private Mensagem GetMsgToFile(FileInfo fileItem)

    {

        // Cria um objeto Mensagem

        Mensagem msg = new Mensagem();

 

        // Utilizaremos a classe StreamReader para ler as informações

        // contidas no arquivo

        StreamReader r = fileItem.OpenText();

       

        // Lendo linha por linha e adicionando no objeto.

        msg.Nome = r.ReadLine();

        msg.DT_Envio = DateTime.Parse(r.ReadLine());

        msg.Msg = r.ReadLine();

        r.Close();

 

        // Retornando a mensagem preenchida

        return msg;

    }

 

 

 

Como falei no início do artigo nós iríamos utilizar Generics e para isso

vamos criar um método GetAllMensagens que irá retorar uma List que só

contem objetos do tipo Mensagem, para isso não se esqueça de fazer

referência ao using System.Collections.Generic;

 

Segue:

 

private List<Mensagem> GetAllMensagens()

    {

        // Variável que recebe o caminho da pasta Mensagem no servidor

        string pastNome = Server.MapPath("Mensagens");

 

        // Cria uma List de Mensagens

        List<Mensagem> _listMsg = new List<Mensagem>();

       

        // Variável de informações do diretório passado como parâmetro

  // que nesse caso estamos passando o caminho da pasta

  // onde conte as mensagens

        DirectoryInfo dirInfMsg = new DirectoryInfo(pastNome);

 

        // O método GetFiles retorna um array de FileInfo e dessa forma

        // podemos percorrer todos os arquivos do diretório

        foreach (FileInfo fileItem in dirInfMsg.GetFiles())

        {

            // Adicionando o

            _listMsg.Add(GetMsgToFile(fileItem));

        }

 

        // Retorna a List de Mensagens

        return _listMsg;

    }

 

Para finalizar vamos criar o método do LinkButton para listar as

mensagens no grid utilizando os métodos que nós acabamos de criar.

 

 

protected void listMsg_Click(object sender, EventArgs e)

    {

        // Atribui ao DataSource do Grid a List de Mensagem

        this.grdMsg.DataSource = GetAllMensagens();

        this.grdMsg.DataBind();

    }

 

Execute e aplicação, você deverá ter a seguinte tela:

 

 

 

Finalizando...

 

Neste artigo aprendemos como utilizar as classes DirectoryInfo, FileInfo, StreamWriter e StreamReader para manipulação de arquivos e diretórios e como utilizá-los para criar um post de mensagens sem armazena-lás no banco.

 

Espero ter ajudado e qualquer sujestões ou dúvidas segue email: ebenezer05@gmail.com

 

Abraços...



Total de visualizações: 2190
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Criar um post de Mensagens sem utilizar banco de dados e sim arquivos.
Criando um método para exibir vários alerts na tela
Adicionar primeiro dados em um GridView e depois na base de dados usando Transaction.
Pesquisando informações que estejam entre as datas Informadas com Stored Procedure.
Criando parâmetros não obrigatórios em procedures
Utilizando método Sort em uma lista genérica
Utilizando DLL de acesso a dados genérica – Parte 1
Criando uma DLL de acesso a dados Genérica utilizando o namespace System.Data.Comom
Neste artigo irei mostrar como utilizar o controle ImageMap que veio na versão 2.0 do Asp.NET.
Sobre o Autor
  [sumir] [aparecer]
 
Ebenézer de Souza Possui Superior em Bacharelado em Sistemas de informação e é desenvolvedor de aplicações e sistemas web na plataforma .NET. Atua como analista/programador na Corretora de Seguros BRB e escreve artigos para comunidade ECodigo.com.br

Informaes Online
Usurios Online: 337
Artigos:  750
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC