Busca online em todo site:
Heroes

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




Título do Artigo

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: 1704

comente
 


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: 1704
voltar   comente  subir

Autor:


Por: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


Comentários:


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

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

Neste artigo irei mostrar como utilizar o controle ImageMap que veio na versão 2.0 do Asp.NET.
Criar um post de Mensagens sem utilizar banco de dados e sim arquivos.
Pesquisando informações que estejam entre as datas Informadas com Stored Procedure.
Criando uma DLL de acesso a dados Genérica utilizando o namespace System.Data.Comom
Adicionar primeiro dados em um GridView e depois na base de dados usando Transaction.

Publicidade:

[sumir] [aparecer]
NETITC




Informaes Online:

Usurios Online: 550
Artigos:  662
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1226
Usurios Cadastrados: 5786

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 381 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC